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

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

После установки последних обновлений в конфигурации 1С:Зарплата и управление персоналом 8 (релизы 3.1.27.148 / 3.1.28.60 и выше) многие пользователи столкнулись с неожиданным поведением программы. При расчете резерва отпусков (документ Начисление оценочных обязательств по отпускам) система начала подтягивать данные о заработке за очень старые периоды (например, 2022 или 2023 годы при расчете в 2025 году), вместо привычных 12 предшествующих месяцев.

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

Выясним причину изменения методики

Проанализируем ситуацию с точки зрения законодательства. Ранее программа использовала упрощенный алгоритм: для расчета среднего заработка в резервах брались 12 календарных месяцев, предшествующих месяцу расчета. Если в этом периоде у сотрудника не было начислений (например, декретный отпуск), средний заработок часто принимался равным нулю или рассчитывался из текущего оклада.

Однако, согласно Постановлению Правительства РФ № 922 (п. 6), если работник не имел фактически начисленной заработной платы или фактически отработанных дней за расчетный период и до начала расчетного периода, средний заработок определяется исходя из суммы заработной платы, фактически начисленной за предшествующий период, равный расчетному.

Разработчики 1С привели алгоритм в строгое соответствие с этой нормой. Теперь, если за последние 12 месяцев у сотрудника «пусто», программа начинает «отматывать» время назад до тех пор, пока не найдет период, в котором были начисления и отработанные дни. Именно поэтому для сотрудников в отпуске по уходу за ребенком система находит данные 2022 или 2023 года.

Рассмотрим влияние на бухгалтерский учет

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

Однако на практике это вызывает сложности:

  1. Резкий скачок сумм резерва по сотрудникам, которые долго находятся в отпусках по уходу.
  2. Проблемы с историческими данными, если база переносилась из старых версий (ЗУП 2.5) свернутой, и детальных данных за 2022 год в текущей базе просто нет или они некорректны.
  3. Отсутствие возможности переключить этот алгоритм в пользовательских настройках.

Техническое решение: модификация кода через расширение

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

Проанализируем процедуру, в которой происходят основные вычисления. Это процедура РассчитатьЗначенияПоказателейСохраняемыйЗаработок. В последних релизах в ней появился механизм «уточнения» сотрудников. Если средний заработок за стандартный период равен 0, система добавляет такого сотрудника в специальный массив для поиска данных в глубоком прошлом.

Разберем по шагам, что нужно сделать в коде:

Найдите в модуле (или перенесите в расширение) фрагмент кода, где система проверяет нулевой средний заработок. Нам нужно закомментировать условие, которое инициирует поиск данных в архивных периодах.

Пример модифицированного кода:


// В новых релизах изменился расчет резервов отпусков.
// Для сотрудников в отпуске по уходу программа ищет период с заработком.
// Чтобы оставить расчет как в старых версиях (средний = 0 для пустых периодов),
// необходимо закомментировать следующий блок:

// Если СреднийЗаработок = 0 Тогда
//     СотрудникиДляУточнения.Добавить(Сотрудник);
//     Продолжить;
// КонецЕсли;

Рассмотрим подробнее, к чему приведет эта правка. Программа увидит, что СреднийЗаработок равен 0, но не пойдет в процедуру уточнения за прошлые годы. В итоге в документ Начисление оценочных обязательств по отпускам попадет нулевое значение, и резерв по такому сотруднику доначисляться не будет (или будет рассчитан из оклада, в зависимости от дальнейших настроек формулы в вашей информационной базе).

Альтернативные способы решения задачи

Если вы не хотите прибегать к программированию, проанализируем другие варианты:

  1. Ручная корректировка: В документе Начисление оценочных обязательств по отпускам на вкладке «Расчет среднего заработка» можно вручную поправить суммы. Однако это трудозатратно, если в компании много «декретниц».
  2. Проверка данных за прошлые периоды: Если суммы, которые подтягивает программа за 2022-2023 годы, кажутся вам некорректными, стоит проверить документы Перенос данных или архивные начисления. Возможно, достаточно один раз выверить эти данные, чтобы автоматический расчет стал приемлемым.
  3. Использование расширения для фиксации периода: Можно написать расширение, которое принудительно устанавливает расчетный период в 12 месяцев для всех сотрудников, игнорируя алгоритм «отмотки» времени назад.

Резюме

Мы выяснили, что изменение периода расчета среднего заработка в 1С:ЗУП — это не ошибка, а реализация требований Постановления № 922. Тем не менее, если ваша учетная политика или техническое состояние базы данных требуют возврата к старой методике, вы можете использовать программную корректировку в процедуре РассчитатьЗначенияПоказателейСохраняемыйЗаработок.

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

← На главную