Как работает новый алгоритм расчета остатков отпусков в 1С:ЗУП 3.1 и что такое обрезки

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

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

Почему изменился алгоритм расчета?

Проанализируем причины изменений. В старых релизах 1С «половина месяца» считалась динамически. Программа брала продолжительность конкретного рабочего месяца (периода в 30 или 31 день) и делила его пополам. Из-за разного количества дней в календарных месяцах возникали ситуации, когда право на отпуск (те самые 2.33 дня) могло начислиться в одном календарном месяце дважды или не начислиться вовсе. Это вызывало путаницу в отчетах и претензии со стороны контролирующих органов.

Новый алгоритм призван привести расчет в соответствие с «Правилами об очередных и дополнительных отпусках» (утв. НКТ СССР 30.04.1930 № 169). Согласно пункту 35 этих правил, излишки менее половины месяца исключаются, а излишки не менее половины месяца округляются до полного месяца. В современной интерпретации 1С «половина месяца» теперь жестко привязана к числу 15 (или 16 в исключительных случаях), что позволяет зафиксировать дату начисления прав внутри каждого месяца.

Вариант 1: Отработана половина месяца или более в начале года

Разберем ситуацию, когда сотрудник принят в первой половине календарного месяца. Например, рабочий год начинается 15.02.2017. В феврале 28 дней, половина — 14. Следовательно, условие «отработана половина месяца» выполняется сразу в месяце приема.

В этом случае мы определяем дату начисления прав следующим образом: Дата начала рабочего месяца + половина продолжительности календарного месяца. Но при этом дата ограничивается концом месяца. Посмотрим на пример:

  1. Февраль: 14.02.17 + 14 дней = 28.02.17. Право на 2.33 дня возникает в последний день февраля.
  2. Март: 14.03.17 + 16 дней = 30.03.17.
  3. Апрель: 14.04.17 + 15 дней = 29.04.17.

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

Вариант 2: Отработано менее половины месяца («Система обрезков»)

Теперь выясним причину негодования многих пользователей — расчет при приеме в конце месяца. Рассмотрим пример: рабочий год начинается 20.02.2017. В феврале отработано всего 9 дней (с 20 по 28 число). Это меньше половины (15 дней).

Проанализируем, как система собирает «обрезки». Чтобы сотрудник получил право на первые 2.33 дня отпуска, сумма дней в неполных месяцах должна составить 15. Программа берет «обрезок» из февраля (9 дней) и ищет, сколько дней нужно добавить из марта, чтобы получить 15. Математика проста: 15 - 9 = 6.

Следовательно, даты начисления прав будут следующими:

Важный нюанс: Обратите внимание, что программа каждый раз «виртуально» возвращается к первому неполному месяцу (февралю) и добирает из текущего месяца ровно столько дней, сколько не хватило тогда. Это сделано для того, чтобы зафиксировать единую дату начисления (в нашем примере — 6-е число) на весь рабочий год. Если бы мы каждый раз считали 15 дней от предыдущей даты, день начисления постоянно смещался бы вперед, что противоречит логике ежемесячного начисления.

Исключительный случай: 17-е число и 31 день

Посмотрим на ситуацию, которая кажется ошибкой, но на самом деле является математически обоснованной. Если рабочий год начинается 17 числа в месяце, где 31 день (например, январь), то в первом месяце отработано ровно 15 дней (с 17 по 31 число включительно). Однако половина от 31 дня — это 15.5. Согласно правилам, 15 дней — это все еще меньше половины. Поэтому начисление прав происходит, когда сумма «обрезков» станет равна 16 дням.

Пример для начала года 17.01.2017:

  1. 01.02.2017: (15 дней января + 1 день февраля = 16).
  2. 01.03.2017: (15 дней января + 1 день марта = 16).
  3. 01.04.2017: (15 дней января + 1 день апреля = 16).

Техническая реализация логики

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


// Псевдокод логики определения даты права
Если ОтработаноВПервомМесяце >= 15 Тогда
    ДатаНачисления = КонецТекущегоКалендарногоМесяца();
Иначе
    ДнейДоПоловины = 15 - ОтработаноВПервомМесяце;
    ДатаНачисления = НачалоМесяца(ТекущаяДата) + ДнейДоПоловины - 1;
КонецЕсли;

Важно понимать: Если сотрудник увольняется 5-го числа, а право по графику «обрезков» возникает 6-го, то за последний месяц он не получит 2.33 дня компенсации, так как излишек стажа за этот месяц составит менее 15 дней.

Как это влияет на работу бухгалтера и кадровика?

Рассмотрим практические последствия данного алгоритма:

  1. Предсказуемость: Теперь вы можете точно сказать сотруднику, какого числа у него увеличится остаток отпуска. Это всегда будет одна и та же дата месяца (за исключением случаев переноса рабочего года из-за отпусков за свой счет).
  2. Отсутствие дублей: Исключена ситуация, когда в одном месяце (например, в марте) остаток увеличивается дважды — 1-го и 31-го числа.
  3. Соответствие ГИТ: При проверках трудовой инспекции такая методика округления (базирующаяся на 15 днях) признается наиболее корректной и соответствующей духу закона.

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

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

← На главную