Имя: Пароль:
1C
1С v8
ЗУП 3.1 получить норму за месяц сотрудника
0 mataranga
 
15.03.18
07:40
Доброе время суток,

ЗУП 3.1

Нужно получить норму сотрудников за месяц, дабы выгрузить в табель.

Само по себе это не проблема дернуть запросом.
Но было сказано что в ЗУП 3.1 очень рекомендуется не обращатся к регистрам запросом а использовать встроенные функции и процедуры.

Подскажите пожалуйста какую надо использовать функцию из общего модуля чтобы вытащить норму сотрудника(ов)
1 dft2014
 
15.03.18
13:32
(0) Интересная тема, послушаю...

P.S. В свое время норму получала все-таки Функцией получения количества рабочих дней по графику работы сотрудника:


Функция КоличествоРабочихДнейПоГрафикуРаботы(ДатаН, ДатаК, ГрафикРаботы)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
    |    ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
    |    СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение,
    |    СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ДополнительноеЗначение,
    |    СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначениеНорма) КАК ОсновноеЗначениеНорма,
    |    СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначениеНорма) КАК ДополнительноеЗначениеНорма
    |ИЗ
    |    РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
    |ГДЕ
    |    ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
    |    И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &ДатаН И &ДатаК
    |    И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ВидУчетаВремени
    |    И ГрафикиРаботыПоВидамВремени.ВремяВЧасах = ЛОЖЬ
    |
    |СГРУППИРОВАТЬ ПО
    |    ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
    |    ГрафикиРаботыПоВидамВремени.ВидУчетаВремени";       
    
    Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
    Запрос.УстановитьПараметр("ДатаК", ДатаК);
    Запрос.УстановитьПараметр("ДатаН", ДатаН);
    Запрос.УстановитьПараметр("ВидУчетаВремени", Справочники.ВидыИспользованияРабочегоВремени.РабочееВремя);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ОсновноеЗначение = Выборка.ОсновноеЗначение;
    Иначе
        ОсновноеЗначение = 0;
    КонецЕсли;
    
    Возврат ОсновноеЗначение;
КонецФункции
2 Amra
 
15.03.18
13:35
(0) Нормы разные бывают. В настройках даже задается, что использовать - по графику ли, среднее ли, по производственному календарю ли