При работе с типовыми отчетами в конфигурации 1С:Зарплата и управление персоналом пользователи часто сталкиваются с ситуацией, когда остаток отпуска за определенный месяц увеличивается непропорционально. Например, вместо ожидаемых 2,33 или 3,67 дня система добавляет сразу значительно большее количество. Разберем подробно, почему так происходит, какие законодательные акты лежат в основе этой логики и стоит ли пытаться изменить это поведение программы на уровне кода.
Рассмотрим ситуацию: при формировании отчетов на разные даты (например, на конец января и конец февраля) мы замечаем, что разница в остатке дней не соответствует среднемесячному начислению. Если у сотрудника установлено право на 44 дня отпуска в год (28 основных + 16 дополнительных за работу в особых климатических условиях), то ежемесячно он должен «зарабатывать» примерно 3,67 дня (44 / 12 = 3,666...). Однако на 11-й месяц работы программа может добавить к остатку сразу около 7,33 дня или более.
Выясним причину такого поведения. Оно обусловлено так называемым «правилом 11 месяцев». Согласно пункту 28 «Правил об очередных и дополнительных отпусках», утвержденных НКТ СССР 30.04.1930 № 169 (которые продолжают действовать в части, не противоречащей ТК РФ), сотрудники, проработавшие у работодателя не менее 11 месяцев, подлежат зачету в срок работы, дающей право на полный отпуск. Это означает, что отработав 11 месяцев, сотрудник получает право на компенсацию или использование отпуска за весь год целиком (все 12 месяцев).
Проанализируем математику процесса на примере стандартного отпуска (28 дней):
В случае с 44 днями отпуска ситуация выглядит еще масштабнее: за 10 месяцев накапливается 36,67 дня, а на 11-й месяц система добавляет 7,33 дня, чтобы в сумме получилось ровно 44. Именно этот всплеск пользователи часто принимают за ошибку в отчете.
Чтобы убедиться в корректности расчетов, проанализируем внутренние механизмы хранения данных. В системе 1С:ЗУП право на отпуск фиксируется в разрезе рабочих лет сотрудника. Рассмотрим основные шаги для проверки:
ЗаработанныеПраваНаОтпуска. В нем формируются записи в разрезе периодов и видов отпусков. Проанализируем, как система распределила права по годам.Если возникла необходимость проследить логику расчета на уровне программного кода, нам потребуется обратиться к общему модулю ОстаткиОтпусков. Именно в нем сосредоточены основные функции по расчету прав на отпуск.
Разберем основные моменты, связанные с доработкой этого функционала:
Механизм расчета остатков является сквозным для всей конфигурации. Он используется не только в отчетах, но и в документах Увольнение, Отпуск, а также при расчете оценочных обязательств (резервов). Посмотрим на примерную структуру вызова функций (условно):
// В общем модуле ОстаткиОтпусков происходит сбор данных
// о накопленных днях с учетом настройки "правила 11 месяцев".
Процедура СформироватьТаблицуОстатковОтпусков(ПараметрыРасчета) Экспорт
// Здесь происходит обход периодов работы сотрудника
// Если накопленный стаж в рабочем году >= 11 месяцев,
// система применяет алгоритм округления до полного года.
КонецПроцедуры
Попытка «отключить» это поведение в коде приведет к серьезным последствиям. Если мы принудительно заставим программу начислять дни строго пропорционально (по 1/12 в месяц), то при увольнении сотрудника, отработавшего 11 месяцев, возникнет конфликт данных. Трудовое законодательство потребует выплатить компенсацию за полные 12 месяцев (28 или 44 дня), а ваш отчет будет показывать меньшее число. Это создаст риски при проверках трудовой инспекцией и вызовет вопросы у аудиторов.
Рассмотрим еще один важный аспект — округление. В настройках кадрового учета 1С:ЗУП можно управлять тем, как программа отображает дробные части дней. По умолчанию расчет ведется с точностью до двух знаков после запятой.
Проанализируем рекомендации по настройке:
Проанализировав ситуацию, мы приходим к выводу, что «странное» поведение отчета является абсолютно штатным и юридически обоснованным. Программа 1С:ЗУП стремится к тому, чтобы данные в справке об остатках максимально соответствовали суммам реальных обязательств работодателя перед сотрудником в случае его увольнения прямо сейчас.
Рекомендация: Не вносите изменения в общий модуль ОстаткиОтпусков. Вместо этого научитесь читать данные через призму рабочих лет сотрудника. Если вы видите резкое увеличение остатка в феврале при начале рабочего года в апреле прошлого года — это и есть срабатывание «правила 11 месяцев». Для проверки всегда сопоставляйте дату формирования отчета с датой начала трудового договора сотрудника.