|
ЗУП 3.1 Правильно определить рабочий/праздничный день |
☑ |
0
егаис
03.12.18
✎
13:17
|
Как программно кошерно определить, что день является праздничным или выходным в текущей редакции?
|
|
1
Натуральный Йог
03.12.18
✎
13:17
|
(0) Из производственного календаря
|
|
2
егаис
03.12.18
✎
13:20
|
(1) из него только выходные
есть суммировщики
|
|
3
иубиповец
03.12.18
✎
13:21
|
(1) у конкретного сотрудника выходной из графика (если график не 5.2 то Производственный не поможет)
А праздники да из календаря (но регионального если несколько)
|
|
4
егаис
03.12.18
✎
13:32
|
строить запрос по "Графики работы по видам времени" с отбором по основному времени Выходные или Праздники.
Решение в лоб конечно, пока не вижу другого варианта
Может есть готовые функции в ОМ?
|
|
5
Cyberhawk
03.12.18
✎
13:46
|
"Может есть готовые функции в ОМ?" // Там так сложно поискать по именам методов?
|
|
6
mikeA
03.12.18
✎
14:29
|
(5) В программном интерфейсе календарных графиков нет метода, явно определяющего, рабочий день это или выходной. Зато есть метод, получающий календарь Российской федерации вот таким чудесным способом))
Справочники.ПроизводственныеКалендари.НайтиПоКоду("РФ")
(0) Можно попроовать через ДатыБлижайшихРабочихДней.
КалендарныеГрафики.ДатыБлижайшихРабочихДней(График, НачальныеДаты)
В массив НачальныеДаты помещаешь дату или даты которые надо проверить.
Функция возвращает соответствие, причём проверяемая дата входит. Т.е. для рабочей даты ближайшая к ней рабочая будет она же.
Получается несколько через #опу. Так что ты задачу полностью озвучь, может тогда по-человечески получится использовать интерфейс календарных графиков. Или таки да надо запросом.
|
|
7
егаис
03.12.18
✎
14:31
|
(6) надо сейчас. На коленке накидал быстро
Функция РаботаВПраздничныйИлиВыходнойДень(Сотрудник, РабочаяДата)
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудник, "ГрафикРаботы", РабочаяДата);
Если КадровыеДанные.Количество() = 1 Тогда
ГрафикРаботы = КадровыеДанные[0].ГрафикРаботы;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрафикиРаботыПоВидамВремени.ВидУчетаВремени.ОсновноеВремя КАК ОсновноеВремя
|ИЗ
| РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
|ГДЕ
| ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
| И ГрафикиРаботыПоВидамВремени.Дата = &Дата";
Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы);
Запрос.УстановитьПараметр("Дата", РабочаяДата);
РезультатЗапросаВыборка = Запрос.Выполнить().Выбрать();
Если РезультатЗапросаВыборка.Следующий() Тогда
Возврат ((РезультатЗапросаВыборка.ОсновноеВремя = Справочники.ВидыИспользованияРабочегоВремени.ВыходныеДни) ИЛИ (РезультатЗапросаВыборка.ОсновноеВремя = Справочники.ВидыИспользованияРабочегоВремени.Праздники));
Иначе
Возврат Ложь
КонецЕсли;
Иначе
Возврат Ложь
КонецЕсли;
КонецФункции
|
|
8
pavlika
03.12.18
✎
14:35
|
Индивидуальные графики как учитываете?
|
|
9
егаис
03.12.18
✎
14:36
|
(8) угу, в курсе, буду допиливать, но пока их нет
решение на раз собственно
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший