|
ЗУП 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) угу, в курсе, буду допиливать, но пока их нет
решение на раз собственно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |