Почему в табеле ЗУП 2.5 праздничные дни в период отпуска заполняются как ОТ вместо В и как это исправить?

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

Согласно статье 120 Трудового кодекса РФ, нерабочие праздничные дни, приходящиеся на период ежегодного основного или дополнительного оплачиваемого отпуска, не включаются в число календарных дней отпуска. Из этого следует, что в табеле учета рабочего времени такие дни должны обозначаться кодом «В» (выходные) или цифровым кодом «26», а не кодом отпуска «ОТ» (или «09»).

Однако пользователи устаревшей, но все еще используемой конфигурации «1С:Зарплата и управление персоналом 2.5» (ЗУП 2.5) часто сталкиваются с тем, что при автоматическом заполнении табеля праздничные дни внутри отпуска упорно заполняются кодом «ОТ». Проанализируем, почему так происходит, и рассмотрим все возможные пути решения этой проблемы — от организационных до программных.

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

Для начала разберем, как алгоритмы ЗУП 2.5 обрабатывают проведение документов. Когда расчетчик проводит документ Начисление отпуска, программа регистрирует период отсутствия сотрудника как единый непрерывный интервал в регистре расчета Основные начисления и в регистре сведений Состояния сотрудников.

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

Ниже приведены основные способы решения данной проблемы.

Способ 1. Программная доработка заполнения табеля (для программистов)

Если на предприятии принято решение использовать именно типовой документ Табель учета рабочего времени и заполнять его автоматически, можно внести изменения в код конфигурации. Для этого нам потребуется скорректировать модуль документа ТабельУчетаРабочегоВремениОрганизации.

Найдем в модуле документа экспортную функцию Автозаполнение и добавим в самый ее конец (перед оператором КонецФункции) специальный блок кода. Этот код выберет все праздничные дни из регламентированного производственного календаря за расчетный год и заменит код «ОТ» на код «В» для соответствующих дат.

Рассмотрим пример реализации этой доработки:


// Вставляем код в самый конец функции Автозаполнение(Запрос = Неопределено, Сотрудник = Неопределено, ТекущаяСтрокаТабличнойЧасти = Неопределено) Экспорт

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

МассивПраздники = ЗапросПраздников.Выполнить.Выгрузить.ВыгрузитьКолонку("ДатаПраздника");
ТаблВспом = ОтработанноеВремя.ВыгрузитьКолонки;
СтрЧисел = "0123456789";

Для каждого Стр Из ОтработанноеВремя Цикл
    Для каждого Кол Из ТаблВспом.Колонки Цикл
        Если Кол.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.КлассификаторИспользованияРабочегоВремени") Тогда
            ИмяКолонки = Кол.Имя;
            Если Стр[ИмяКолонки] = Справочники.КлассификаторИспользованияРабочегоВремени.ОсновнойОтпуск Тогда
                Д2 = Прав(ИмяКолонки, 2);
                ДеньКолонка = Число("" + ?(Найти(СтрЧисел, Лев(Д2, 1)) > 0, Лев(Д2, 1), "") + Прав(Д2, 1));
                ДатаКолонки = Дата(Год(PeriodРегистрации), Месяц(ПериодРегистрации), ДеньКолонка, 0, 0, 0);
                
                Если МассивПраздники.Найти(ДатаКолонки) = Неопределено Тогда
                    Продолжить;
                КонецЕсли;
                
                Стр[ИмяКолонки] = Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецЦикла;

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

Способ 2. Отказ от документа «Табель» в пользу метода отклонений

В программе ЗУП 2.5 поддерживается так называемый метод отклонений. При его использовании создавать ежемесячный документ Табель учета рабочего времени вообще не требуется — расчет зарплаты производится на основании кадровых приказов и документов-отклонений (командировки, больничные, отпуска).

Если вам необходимо распечатать унифицированную форму Т-13, используйте отчет Табель учета рабочего времени (через меню «Отчеты»). Преимущество этого способа в том, что доработать внешний отчет или настроить его гораздо проще и безопаснее для системы, чем вносить изменения в структуру проведения документов.

Способ 3. Разбиение отпуска на части (стандартными средствами)

Если вы не хотите привлекать программистов и вносить изменения в код, можно решить проблему методологически. Для этого отпуск начисляется частями:

  1. Первая часть отпуска регистрируется до праздничного дня;
  2. Вторая часть отпуска регистрируется после праздничного дня.

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

Способ 4. Переход на современную редакцию ЗУП 3.1

Самым надежным и перспективным решением является переход на актуальную редакцию 1С:Зарплата и управление персоналом 3.1. Разработчики фирмы «1С» полностью переработали архитектуру учета времени в новой версии программы.

В ЗУП 3.1 алгоритм заполнения табеля изначально сопоставляет периоды отсутствия сотрудников с регламентированным производственным календарем. Праздничные дни, приходящиеся на период отпуска, автоматически отражаются в табеле кодом «В» без каких-либо доработок, дополнительных настроек или ручных правок.

← На главную