Ошибка расчета среднего заработка в 1С:УПП (релизы 2025 года): почему занижаются отпускные и как это исправить?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

С выходом обновлений конфигурации «1С:Управление производственным предприятием» (УПП) в 2025 году, связанных с введением прогрессивной шкалы НДФЛ (ФЗ-176), многие пользователи столкнулись с критической ошибкой при расчете отпускных и командировочных. Сумма начислений оказывается кратно ниже ожидаемой (в 2, 3 и более раз).

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

Суть проблемы: почему средний заработок падает?

Проблема проявляется в документах «Начисление отпуска сотрудникам организаций» и «Оплата по среднему заработку». При расчете среднего дневного заработка (СДЗ) программа использует формулу:

СДЗ = Сумма заработка за период / Количество отработанных дней (часов)

После обновления релизов (начиная с 1.3.244.1) для целей учета НДФЛ разработчики изменили структуру хранения данных. Теперь Районный коэффициент (РК) и Северная надбавка (СН) технически выделяются как отдельные записи, чтобы корректно применять к ним ставки налога.

Однако алгоритм сбора данных для среднего заработка начал суммировать отработанное время не только по окладу, но и по этим надбавкам. В результате знаменатель формулы (дни) необоснованно увеличивается. Если у сотрудника есть Оклад + РК + СН, то количество дней за месяц может превратиться из 29.3 в 87.9 (29.3 * 3). Это приводит к резкому уменьшению среднего заработка.

Диагностика: как убедиться, что у вас эта ошибка

Прежде чем применять исправления, давайте убедимся, что причина именно в этом. Откроем документ начисления отпуска.

  1. Перейдем на вкладку «Расчет среднего заработка».
  2. Внимательно посмотрим на колонку «Дней расчетного периода» (или «Отработано дней»).
  3. В норме дни должны стоять только напротив основных начислений (например, «Оклад по дням», «Оплата по часовому тарифу»).
  4. Если вы видите, что количество дней (например, 29.3 или фактически отработанные дни) проставлено также в строках с начислениями «Районный коэффициент», «Северная надбавка» или различными доплатами, которые выплачиваются за то же самое время, — это ошибка.

Вы можете временно проверить гипотезу вручную: обнулите дни в строках с РК и СН прямо в табличной части документа и нажмите «Рассчитать начисления» (на вкладке «Оплата»). Если сумма станет верной, значит, диагноз подтвержден.

Варианты решения проблемы

Рассмотрим несколько способов исправления ситуации: от программной правки до корректной работы с официальными обновлениями.

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

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

Нам понадобится общий модуль ПроведениеРасчетовПереопределяемый. В нем ищем функцию, отвечающую за сбор данных. В релизах 2025 года она обычно называется ПолучитьДанныеДляРасчета2025 (или похожим образом, используемым в ветке Иначе при проверке даты закона 176-ФЗ).

В тексте запроса внутри этой функции есть блок, который определяет, какое значение брать в поле ОтработаноДней. Нам нужно принудительно занулять дни для начислений, которые являются надбавками (РК, СН) или не являются основным рабочим временем.

Найдем фрагмент запроса, где формируется поле ОтработаноДней. Обычно он выглядит как конструкция ВЫБОР КОГДА .... Нам необходимо расширить условие обнуления дней.

Рассмотрим наиболее универсальный вариант правки, предложенный сообществом:


// Фрагмент запроса в функции ПолучитьДанныеДляРасчета2025

|   СУММА(ВЫБОР
|       // Старое (типовое) условие могло выглядеть так:
|       КОГДА РасчетСреднегоЗаработка.Начисление.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.РайонныеСеверныеНадбавки)
|           ТОГДА 0 
|       // ДОБАВЛЯЕМ УСЛОВИЕ НИЖЕ:
|       // Если вид времени не является "Отработанное в пределах нормы" (т.е. это доплата, надбавка, премия),
|       // то дни по нему учитывать не нужно, они уже учтены в окладе.
|       КОГДА РасчетСреднегоЗаработка.Начисление.ВидВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыВремени.ОтработанноеВПределахНормы)
|           ТОГДА 0
|
|       // Далее идет типовой код...
|       КОГДА РасчетСреднегоЗаработка.ВидРасчета В (&ОсновнойЗаработок)
...

Пояснение к коду:

Мы добавляем проверку на ВидВремени. Значение Перечисление.ВидыВремени.ОтработанноеВПределахНормы соответствует явке, работе по табелю и т.д. Все остальные виды (дополнительные начисления, надбавки) не должны увеличивать знаменатель расчета среднего. Это условие покрывает не только РК и СН, но и другие доплаты, которые могли ошибочно давать дни.

Способ 2. Исправление в модуле объекта (Временная мера)

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

В процедуре расчета можно постфактум очистить лишние дни перед записью движений или расчетом результата. Рассмотрим алгоритм действий:

  1. Перехватываем таблицу данных расчета среднего после её формирования, но до расчета итоговой суммы.
  2. Проходим циклом по таблице.
  3. Если строка соответствует Районному коэффициенту или Северной надбавке (проверяем по Плану Видов Расчета), принудительно устанавливаем ОтработаноДней = 0 и ОтработаноЧасов = 0.

// Пример алгоритма для обработки табличной части "РасчетСреднего"
Для Каждого СтрокаТЧ Из ДокументОбъект.РасчетСреднегоЗаработка Цикл
    Если СтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.РайонныйКоэффициент 
       ИЛИ СтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.СевернаяНадбавка Тогда
        
        СтрокаТЧ.ОтработаноДней = 0;
        СтрокаТЧ.ОтработаноЧасов = 0;
        // Для пятидневки тоже обнуляем, если используется
        СтрокаТЧ.ОтработаноПоПятидневке = 0;
        
    КонецЕсли;
КонецЦикла;

Официальное исправление и нюансы обновления (Релиз 1.3.245.3 и выше)

Фирма «1С» признала данную ошибку и выпустила исправление в релизе 1.3.245.3. Однако простого обновления часто бывает недостаточно. Пользователи сталкиваются с сообщением «Нет данных для расчета среднего заработка» или продолжают видеть неверные цифры.

Разберем, как правильно действовать после обновления на исправленный релиз.

1. Полный перерасчет документов 2025 года

Из-за изменений в регистрах накопления по НДФЛ и структуре данных, документы, введенные в начале 2025 года на старых релизах (до 245.3), содержат некорректные движения. Простого перепроведения может быть недостаточно.

Рекомендуемая последовательность действий:

  1. Сделайте резервную копию базы.
  2. Отмените проведение всех начислений зарплаты, отпусков и больничных за 2025 год.
  3. Последовательно проведите и пересчитайте их в хронологическом порядке. Это обновит записи в регистрах, к которым обращается алгоритм расчета среднего.

2. Ошибка «Нет данных для расчета»

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

  1. Заполните документ (сотрудник, период).
  2. Перейдите на вкладку «Расчет среднего заработка».
  3. Нажмите кнопку «Рассчитать» (именно на этой вкладке!). Это сформирует базу среднего.
  4. Только после этого вернитесь на вкладку «Оплата» и нажмите «Рассчитать начисления».

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

Особенности учета премий и индексации

При внесении правок в код обратите внимание на премии. Если премия начисляется фиксированной суммой, у неё часто не заполняются отработанные дни, и это нормально. Однако, если премия зависит от времени, но дни в среднем по ней не нужны (так как они учтены в окладе), предложенный выше код с проверкой ВидВремени <> ОтработанноеВПределахНормы корректно обработает и эту ситуацию.

Также проверьте коэффициенты индексации. В некоторых случаях они могут некорректно применяться к выделенным частям (РК/СН). Если вы видите расхождения в копейках, убедитесь, что коэффициент индексации в таблице среднего заполнен единообразно для всех составных частей заработка за один и тот же месяц.

Резюме

Ошибка вызвана дублированием отработанного времени для надбавок. Для её устранения:

← На главную