Почему при перезаполнении шестидневного графика работы в 1С воскресенье становится выходным днём?

Программист 1С v8.3 (Обычные формы)
← На главную

Рассмотрим распространенную проблему, с которой сталкиваются бухгалтеры и кадровики в конфигурациях на базе обычных форм (например, УПП 1.3, ЗУП 2.5, ЗКБУ 1.0). При создании графика работы по типу «Шестидневка» с нестандартным выходным днем (например, пятница — выходной, а воскресенье — рабочий день) программа при первом заполнении формирует дни корректно. Однако при повторном перезаполнении или редактировании параметров график сбрасывает воскресенье на выходной день.

Проанализируем причины такого поведения программы и разберем варианты решения данной проблемы.

Проанализируем причину ошибки в программном коде

Выясним причину, почему программа переопределяет пользовательские настройки. В типовой обработке заполнения графиков работы алгоритм жестко привязан к общепринятым стандартам рабочих календарных дней. В процедуре ОсновныеДействияФормыОсновныеДействияФормыОК формы заполнения графика находится следующий блок кода:


Если Графики.УчитыватьПраздники Тогда
    Если ТипГрафика = Перечисления.ВидыРабочихГрафиков.Пятидневка Тогда
        Графики.ПервыйВыходной = Перечисления.ДниНедели.Суббота;
        Графики.ВторойВыходной = Перечисления.ДниНедели.Воскресенье;
    ИначеЕсли ТипГрафика = Перечисления.ВидыРабочихГрафиков.Шестидневка Тогда
        Графики.ВторойВыходной = Перечисления.ДниНедели.Воскресенье;
    КонецЕсли;
КонецЕсли;

Ошибка заключается в том, что при повторном вызове формы параметр УчитыватьПраздники инициирует автоматическое присвоение реквизиту Графики.ВторойВыходной значения Перечисления.ДниНедели.Воскресенье. В результате жестко заданная логика конфигурации переписывает пользовательскую таблицу с распределением рабочих часов и принудительно назначает воскресенье выходным днем.

Варианты решения проблемы

Разберем несколько проверенных способов решения задачи — от технической доработки до настройки стандартных возможностей программы.

1. Внесение исправлений в конфигурацию (для программистов)

Если база находится на поддержке с возможностью изменения, отредактируем модуль формы заполнения графика. Для этого необходимо скорректировать порядок присвоения флага УчитыватьПраздники и заблокировать принудительное перезаписывание реквизита ВторойВыходной, если пользователь уже переопределил структуру рабочей недели.

2. Настройка сменного графика по циклам произвольной длины

Для создания графика с нестандартными выходными без изменения программного кода перейдем на использование типа графика «Сменный» вместо «Шестидневки»:

  1. Откроем справочник «Графики работы» и создадим новый элемент.
  2. В параметрах заполнения укажем тип графика «Сменный» или установим флаг заполнения по циклам произвольной длины.
  3. Зададим длительность цикла равной 7 дней.
  4. Распишем состав цикла по дням:
    • День 1 (Понедельник) — 6.2 часа;
    • День 2 (Вторник) — 6.2 часа;
    • День 3 (Среда) — 6.2 часа;
    • День 4 (Четверг) — 5 часов;
    • День 5 (Пятница) — 0 часов (выходной);
    • День 6 (Суббота) — 6.2 часа;
    • День 7 (Воскресенье) — 6.2 часа.
  5. Укажем дату отсчета (понедельник начала года или периода).

При таком подходе система не применяет жесткое условие «воскресенье — всегда выходной», и при повторных перезаполнениях график сохраняет корректную структуру.

3. Использование флага «Суммированный учет рабочего времени»

При смещении выходных дней норма рабочего времени за отдельные недели может отклоняться от стандартного производственного календаря. Установка флага «Суммированный учет рабочего времени» (СУРВ) в настройках графика отключает жесткую привязку к недельным интервалам производственного календаря и позволяет корректно учитывать норму времени за учетный период (месяц, квартал или год).

4. Быстрый обход ошибки при перезаполнении

Если необходимо перезаполнить существующий график без изменения настроек и кода, используем последовательность действий:

  1. Перейдем в настройки заполнения графика.
  2. Снимем флаг «Учитывать праздничные дни» и нажмем кнопку заполнения.
  3. Повторно откроем настройки, установим флаг «Учитывать праздничные дни» обратно и выполним заполнение.

Данная комбинация позволяет обойти сбой инициализации реквизитов и корректно сформировать записи в регистре сведений Графики работы по видам времени.

← На главную