В практике кадрового учета часто возникает ситуация, когда программа 1С:Зарплата и управление персоналом 3.1 некорректно подсчитывает дни ежегодного отпуска, если на период отдыха выпадают государственные праздники. Согласно статье 120 Трудового кодекса РФ, нерабочие праздничные дни, приходящиеся на период ежегодного основного или ежегодного дополнительного оплачиваемого отпуска, в число календарных дней отпуска не включаются. Типичный пример — праздник 12 июня (День России). Если сотрудник уходит в отпуск, захватывающий эту дату, отпуск должен быть продлен на один день, а сам праздничный день не должен оплачиваться как отпускной.
Разберем подробно, почему программа может игнорировать праздник и как настроить систему для корректного расчета.
Первым делом проанализируем настройки глобального календаря системы. Программа «понимает», какой день является праздничным, только на основании справочника Производственные календари.
Важный момент: если ваша организация находится в регионе с собственными праздниками (например, Татарстан или Башкортостан), убедитесь, что в графике работы сотрудника выбран именно региональный календарь, а не общероссийский. Если 12 июня в календаре помечено просто как выходной (суббота или воскресенье), а не как праздник, алгоритм 1С не исключит его из расчета отпуска.
Как показывает практика и обсуждения экспертов, наиболее частая причина ошибки кроется в настройках конкретного графика работы. Рассмотрим ситуацию, когда в карточке сотрудника указан график, в котором по ошибке проставлены рабочие часы в выходные или праздничные дни.
Проанализируем шаги для исправления:
Выясним, не введен ли для сотрудника документ Индивидуальный график. В системе 1С:ЗУП 3.1 индивидуальный график имеет приоритет над общим графиком подразделения. Если в индивидуальном графике на июнь месяц 12-е число заполнено как рабочий день или просто как выходной без признака праздника, то расчет отпуска будет ориентироваться именно на эти данные. В таком случае необходимо скорректировать или перепровести документ индивидуального графика.
Посмотрим на настройки самого начисления. Чтобы праздники исключались, вид отпуска должен быть настроен определенным образом:
Если вы используете пользовательский вид отпуска (например, «Дополнительный отпуск по колдоговору»), и у него не стоит признак ежегодного, система будет считать его просто в календарных днях без учета положений ст. 120 ТК РФ.
Для программистов и опытных пользователей полезно будет проанализировать, как именно 1С вычисляет длительность интервала. В конфигурации Зарплата и управление персоналом 3.1 за это отвечает специализированная функция в общем модуле.
Рассмотрим пример обращения к функции в коде:
Объект.КоличествоДнейОсновногоОтпуска = УчетРабочегоВремениРасширенный.ДлительностьИнтервала(
Объект.Sotrudnik,
Объект.ДатаНачалаОсновногоОтпуска,
Объект.ДатаОкончанияОсновногоОтпуска,
ОписаниеВидаОтпуска.СпособРасчетаПоКалендарнымДням,
ОписаниеВидаОтпуска.ЕжегодныйОтпуск
);
Разберем параметры функции ДлительностьИнтервала:
Функция ДлительностьИнтервала(
Знач Сотрудник,
Знач ДатаНачала,
Знач ДатаОкончания,
Знач ПоКалендарнымДням = Истина,
Знач БезУчетаПраздников = Истина
) Экспорт
Обратите внимание на параметр БезУчетаПраздников. В контексте 1С значение Истина здесь означает, что праздники не должны включаться в итоговое количество дней (то есть они «вырезаются» из периода). Если при отладке вы видите, что ОписаниеВидаОтпуска.ЕжегодныйОтпуск имеет значение Ложь, значит, в настройках вида отпуска не стоит нужный флаг.
Также проанализируем ситуацию с неполной ставкой (например, 0.5 ставки). При работе на полставки график сотрудника может быть настроен так, что праздничные дни в нем не отражены корректно. Проверьте, чтобы в графике неполного рабочего времени стояла галочка Считать норму по другому графику (обычно по пятидневке), чтобы праздники учитывались правильно.
Если все настройки верны (календарь заполнен, в графике часов нет, вид отпуска правильный), но расчет все равно неверный, стоит обратить внимание на версию программы. В ранних сборках ветки 3.1.6 (например, 3.1.6.37) наблюдались программные ошибки в модуле расчета времени, особенно для сотрудников с суммированным учетом или особыми графиками.
Рекомендуется выполнить следующие действия:
Рассмотрим наглядный пример: сотрудник уходит в отпуск с 08.06 на 17 календарных дней.
Если ваша программа ставит дату выхода 25.06, значит, она посчитала 12 июня как обычный день отпуска. Пройдите по всем вышеописанным шагам, начиная с Производственного календаря и заканчивая Графиком работы сотрудника, чтобы устранить это расхождение.