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

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

При ведении учета в программе 1С:Управление производственным предприятием ред. 1.3 (1С:УПП) периодически возникает необходимость внести изменения в календарь на текущий или следующий год. Часто региональные или локальные указы объявляют определенные даты нерабочими. В этом случае возникает вопрос: как правильно внести изменения, чтобы дни считались именно выходными, а не праздничными?

Рассмотрим причину возникновения этой проблемы, разберем отличие видов дней в платформе и изучим практические варианты настройки системы для корректного расчета нормы времени.

Выясним причину расхождения баланса рабочего времени

В типовых алгоритмах 1С:УПП 1.3 механизм расчета нормативной продолжительности рабочего времени строго разделяет статусы дней:

  1. Праздничные дни (записи из регистра сведений Праздники). Присвоение дню статуса государственного или регионального праздника автоматически уменьшает месячную норму часов и дней для сотрудников, находящихся на окладе. Кроме того, предпраздничный рабочий день система автоматически сокращает на 1 час.
  2. Выходные и дополнительные нерабочие дни. Подобные дни меняют распределение графика (рабочий день становится нерабочим), но при этом не должны уменьшать месячную законодательную норму времени, предусмотренную производственным календарем для пятидневной или шестидневной рабочей недели.

Если внести дополнительные нерабочие дни (например, 3, 4 и 5 января) через механизмы «Региональные праздники», программа ошибочно запишет их в праздники. В итоге норма времени за месяц уменьшится, предпраздничные дни сократятся, а итоговый баланс рабочего времени «не сойдется» с официальными нормами.

Вариант 1. Программное изменение регистра сведений внешней обработкой

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

В типовой конфигурации алгоритмы заполнения расположены в общем модуле ПроцедурыОбновленияИнформационнойБазы (процедура ЗаполнитьПроизводственныйКалендарь). Мы можем написать аналогичный код для корректировки нужных дат.

Рассмотрим пример кода для установки нужным датам значения ДополнительныйВыходной или Суббота/Воскресенье:


МассивДат = Новый Массив;
МассивДат.Добавить(Дата("20170103"));
МассивДат.Добавить(Дата("20170104"));
МассивДат.Добавить(Дата("20170105"));

Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Календарь.Дата КАК Дата
    |ИЗ
    |	РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
    |ГДЕ
    |	Календарь.Дата В(&МассивДат)";

Запрос.УстановитьПараметр("МассивДат", МассивДат);
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    МенеджерЗаписи = РегистрыСведений.РегламентированныйПроизводственныйКалендарь.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Дата = Выборка.Дата;
    МенеджерЗаписи.Прочитать();
    
    Если МенеджерЗаписи.Выбран() Тогда
        // Устанавливаем вид дня без внесения записи в регистр "Праздники"
        МенеджерЗаписи.ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.ДополнительныйВыходной;
        МенеджерЗаписи.Записать();
    КонецЕсли;
КонецЦикла;

При таком подходе даты не попадают в регистр сведений Праздники, что предотвращает нежеланное уменьшение месячной нормы часов при расчете окладов.

Вариант 2. Прямая корректировка регистра сведений и перерасчет графиков

Разберем вариант без написания кода, если правки требуется внести оперативно:

  1. Откроем регистр сведений РегламентированныйПроизводственныйКалендарь напрямую через меню функции или операцию открытия регистра.
  2. Найдем требуемые даты (например, 03.01, 04.01, 05.01).
  3. Изменим реквизит ВидДня со значения Рабочий на Суббота, Воскресенье или ДополнительныйВыходной.
  4. Убедимся, что указанные даты **не внесены** в справочник/регистр Праздники.

Важно: Изменение базового производственного календаря не перезаполняет сформированные графики работы автоматически! Чтобы изменения вступили в силу, необходимо выполнить следующие действия:

  1. Открыть справочник Графики работы.
  2. Перезаполнить каждый используемый рабочий график на текущий год кнопкой Заполнить.
  3. Проверить и обновить данные в регистре сведений Графики работы по календарным дням и Баланс рабочего времени.

Вариант 3. Использование графиков работы с указанием графика-нормы

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

Для решения задачи разберем по шагам альтернативный метод:

  1. Оставим регламентированный производственный календарь в стандартном виде.
  2. В справочнике Графики работы создадим специальный график (например, «Пятидневка с дополнительными выходными»).
  3. В свойствах созданного графика укажем реквизит «График для расчета нормы» — в нем выберем стандартную пятидневку.
  4. Заполним сам график, отметив 3, 4 и 5 января как выходные дни.

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

← На главную