Рассмотрим распространенную проблему, с которой сталкиваются бухгалтеры и кадровики в конфигурациях на базе обычных форм (например, УПП 1.3, ЗУП 2.5, ЗКБУ 1.0). При создании графика работы по типу «Шестидневка» с нестандартным выходным днем (например, пятница — выходной, а воскресенье — рабочий день) программа при первом заполнении формирует дни корректно. Однако при повторном перезаполнении или редактировании параметров график сбрасывает воскресенье на выходной день.
Проанализируем причины такого поведения программы и разберем варианты решения данной проблемы.
Выясним причину, почему программа переопределяет пользовательские настройки. В типовой обработке заполнения графиков работы алгоритм жестко привязан к общепринятым стандартам рабочих календарных дней. В процедуре ОсновныеДействияФормыОсновныеДействияФормыОК формы заполнения графика находится следующий блок кода:
Если Графики.УчитыватьПраздники Тогда
Если ТипГрафика = Перечисления.ВидыРабочихГрафиков.Пятидневка Тогда
Графики.ПервыйВыходной = Перечисления.ДниНедели.Суббота;
Графики.ВторойВыходной = Перечисления.ДниНедели.Воскресенье;
ИначеЕсли ТипГрафика = Перечисления.ВидыРабочихГрафиков.Шестидневка Тогда
Графики.ВторойВыходной = Перечисления.ДниНедели.Воскресенье;
КонецЕсли;
КонецЕсли;
Ошибка заключается в том, что при повторном вызове формы параметр УчитыватьПраздники инициирует автоматическое присвоение реквизиту Графики.ВторойВыходной значения Перечисления.ДниНедели.Воскресенье. В результате жестко заданная логика конфигурации переписывает пользовательскую таблицу с распределением рабочих часов и принудительно назначает воскресенье выходным днем.
Разберем несколько проверенных способов решения задачи — от технической доработки до настройки стандартных возможностей программы.
Если база находится на поддержке с возможностью изменения, отредактируем модуль формы заполнения графика. Для этого необходимо скорректировать порядок присвоения флага УчитыватьПраздники и заблокировать принудительное перезаписывание реквизита ВторойВыходной, если пользователь уже переопределил структуру рабочей недели.
Для создания графика с нестандартными выходными без изменения программного кода перейдем на использование типа графика «Сменный» вместо «Шестидневки»:
При таком подходе система не применяет жесткое условие «воскресенье — всегда выходной», и при повторных перезаполнениях график сохраняет корректную структуру.
При смещении выходных дней норма рабочего времени за отдельные недели может отклоняться от стандартного производственного календаря. Установка флага «Суммированный учет рабочего времени» (СУРВ) в настройках графика отключает жесткую привязку к недельным интервалам производственного календаря и позволяет корректно учитывать норму времени за учетный период (месяц, квартал или год).
Если необходимо перезаполнить существующий график без изменения настроек и кода, используем последовательность действий:
Данная комбинация позволяет обойти сбой инициализации реквизитов и корректно сформировать записи в регистре сведений Графики работы по видам времени.