Получение количества календарных дней по производственному календарю Код 1C v 8.х Функция КоличествоДнейПоКалендарнымДням(ДатаНачала, ДатаОкончания, ВключатьПраздники = Ложь)
Если НЕ ВключатьПраздники Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СУММА(РегламентированныйПроизводственныйКалендарь.КалендарныеДни) КАК КоличествоДней
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаНачала
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &ДатаОкончания");
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
КоличествоДней = Выборка.КоличествоДней;
Иначе
ОбщегоНазначенияЗК.СообщитьОбОшибке("Проверьте заполнение производственного календаря!");
КоличествоДней = Неопределено;
КонецЕсли;
Иначе
КоличествоДней = (НачалоДня(ДатаОкончания) - НачалоДня(ДатаНачала)) / 86400 + 1;
КонецЕсли;
Возврат КоличествоДней;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 2.5 Получить количество рабочих дней сотрудника В данной статье описаны функции которые вы можете использовать в ЗУП для получения количества рабочих дней по графику работы сотрудника или по производственному календарю
Код 1C v 8.х // Функции получения количества рабочих дней по графику работы сотрудника ил по производственному календарю
Функция КоличествоРабочихДнейПоГрафикуРаботы(ДатаН, ДатаК, ГрафикРаботы)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
| ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
| СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение,
| СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ДополнительноеЗначение,
| СУММА(ГрафикиРаботыПоВидамВремени.ОсновноеЗначениеНорма) КАК ОсновноеЗначениеНорма,
| СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначениеНорма) КАК ДополнительноеЗначениеНорма
|ИЗ
| РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
|ГДЕ
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
| И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &ДатаН И &ДатаК
| И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ВидУчетаВремени
|
|СГРУППИРОВАТЬ ПО
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
| ГрафикиРаботыПоВидамВремени.ВидУчетаВремени";
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Запрос.УстановитьПараметр("ДатаК", ДатаК);
Запрос.УстановитьПараметр("ДатаН", ДатаН);
Запрос.УстановитьПараметр("ВидУчетаВремени", Перечисления.ВидыУчетаВремени.ПоДням);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОсновноеЗначение = Выборка.ОсновноеЗначение;
Иначе
ОбщегоНазначенияЗК.СообщитьОбОшибке("Проверьте заполнение графика!");
ОсновноеЗначение = 0;
КонецЕсли;
Возврат ОсновноеЗначение;
КонецФункции
Функция КоличествоРабочихДнейПоПроизвКаленд(ДатаН, ДатаК)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(РегламентированныйПроизводственныйКалендарь.КалендарныеДни) КАК КоличествоДней,
| СУММА(РегламентированныйПроизводственныйКалендарь.Пятидневка) КАК Пятидневка,
| СУММА(РегламентированныйПроизводственныйКалендарь.Шестидневка) КАК Шестидневка
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаН
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &ДатаК";
Запрос.УстановитьПараметр("ДатаК", ДатаК);
Запрос.УстановитьПараметр("ДатаН", ДатаН);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОсновноеЗначение = Выборка.Пятидневка;
Иначе
ОбщегоНазначенияЗК.СообщитьОбОшибке("Проверьте заполнение графика!");
ОсновноеЗначение = 0;
КонецЕсли;
Возврат ОсновноеЗначение;
КонецФункции
Категория:
1С Зарплата и Управление Персоналом 2.5