С выходом обновлений конфигурации «1С:Управление производственным предприятием» (УПП) в 2025 году, связанных с введением прогрессивной шкалы НДФЛ (ФЗ-176), многие пользователи столкнулись с критической ошибкой при расчете отпускных и командировочных. Сумма начислений оказывается кратно ниже ожидаемой (в 2, 3 и более раз).
В этой статье мы подробно разберем причины этой ошибки, методы диагностики и способы программного исправления, основываясь на коллективном опыте сообщества разработчиков.
Проблема проявляется в документах «Начисление отпуска сотрудникам организаций» и «Оплата по среднему заработку». При расчете среднего дневного заработка (СДЗ) программа использует формулу:
СДЗ = Сумма заработка за период / Количество отработанных дней (часов)
После обновления релизов (начиная с 1.3.244.1) для целей учета НДФЛ разработчики изменили структуру хранения данных. Теперь Районный коэффициент (РК) и Северная надбавка (СН) технически выделяются как отдельные записи, чтобы корректно применять к ним ставки налога.
Однако алгоритм сбора данных для среднего заработка начал суммировать отработанное время не только по окладу, но и по этим надбавкам. В результате знаменатель формулы (дни) необоснованно увеличивается. Если у сотрудника есть Оклад + РК + СН, то количество дней за месяц может превратиться из 29.3 в 87.9 (29.3 * 3). Это приводит к резкому уменьшению среднего заработка.
Прежде чем применять исправления, давайте убедимся, что причина именно в этом. Откроем документ начисления отпуска.
Вы можете временно проверить гипотезу вручную: обнулите дни в строках с РК и СН прямо в табличной части документа и нажмите «Рассчитать начисления» (на вкладке «Оплата»). Если сумма станет верной, значит, диагноз подтвержден.
Рассмотрим несколько способов исправления ситуации: от программной правки до корректной работы с официальными обновлениями.
Если вы не можете оперативно обновить конфигурацию до исправленного релиза (или если ошибка сохраняется в вашей версии), наиболее надежным решением является корректировка запроса в общем модуле.
Нам понадобится общий модуль ПроведениеРасчетовПереопределяемый. В нем ищем функцию, отвечающую за сбор данных. В релизах 2025 года она обычно называется ПолучитьДанныеДляРасчета2025 (или похожим образом, используемым в ветке Иначе при проверке даты закона 176-ФЗ).
В тексте запроса внутри этой функции есть блок, который определяет, какое значение брать в поле ОтработаноДней. Нам нужно принудительно занулять дни для начислений, которые являются надбавками (РК, СН) или не являются основным рабочим временем.
Найдем фрагмент запроса, где формируется поле ОтработаноДней. Обычно он выглядит как конструкция ВЫБОР КОГДА .... Нам необходимо расширить условие обнуления дней.
Рассмотрим наиболее универсальный вариант правки, предложенный сообществом:
// Фрагмент запроса в функции ПолучитьДанныеДляРасчета2025
| СУММА(ВЫБОР
| // Старое (типовое) условие могло выглядеть так:
| КОГДА РасчетСреднегоЗаработка.Начисление.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.РайонныеСеверныеНадбавки)
| ТОГДА 0
| // ДОБАВЛЯЕМ УСЛОВИЕ НИЖЕ:
| // Если вид времени не является "Отработанное в пределах нормы" (т.е. это доплата, надбавка, премия),
| // то дни по нему учитывать не нужно, они уже учтены в окладе.
| КОГДА РасчетСреднегоЗаработка.Начисление.ВидВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыВремени.ОтработанноеВПределахНормы)
| ТОГДА 0
|
| // Далее идет типовой код...
| КОГДА РасчетСреднегоЗаработка.ВидРасчета В (&ОсновнойЗаработок)
...
Пояснение к коду:
Мы добавляем проверку на ВидВремени. Значение Перечисление.ВидыВремени.ОтработанноеВПределахНормы соответствует явке, работе по табелю и т.д. Все остальные виды (дополнительные начисления, надбавки) не должны увеличивать знаменатель расчета среднего. Это условие покрывает не только РК и СН, но и другие доплаты, которые могли ошибочно давать дни.
Если править общий модуль рискованно или невозможно (базовая версия, запрет изменений), можно внести изменения в модуль объекта документа НачислениеОтпускаРаботникамОрганизаций (или создать расширение/внешнюю обработку заполнения табличных частей, если платформа позволяет).
В процедуре расчета можно постфактум очистить лишние дни перед записью движений или расчетом результата. Рассмотрим алгоритм действий:
ОтработаноДней = 0 и ОтработаноЧасов = 0.
// Пример алгоритма для обработки табличной части "РасчетСреднего"
Для Каждого СтрокаТЧ Из ДокументОбъект.РасчетСреднегоЗаработка Цикл
Если СтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.РайонныйКоэффициент
ИЛИ СтрокаТЧ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.СевернаяНадбавка Тогда
СтрокаТЧ.ОтработаноДней = 0;
СтрокаТЧ.ОтработаноЧасов = 0;
// Для пятидневки тоже обнуляем, если используется
СтрокаТЧ.ОтработаноПоПятидневке = 0;
КонецЕсли;
КонецЦикла;
Фирма «1С» признала данную ошибку и выпустила исправление в релизе 1.3.245.3. Однако простого обновления часто бывает недостаточно. Пользователи сталкиваются с сообщением «Нет данных для расчета среднего заработка» или продолжают видеть неверные цифры.
Разберем, как правильно действовать после обновления на исправленный релиз.
Из-за изменений в регистрах накопления по НДФЛ и структуре данных, документы, введенные в начале 2025 года на старых релизах (до 245.3), содержат некорректные движения. Простого перепроведения может быть недостаточно.
Рекомендуемая последовательность действий:
В новых релизах УПП изменилась логика работы кнопок в документе отпуска. Если вы получаете ошибку при нажатии на кнопку «Рассчитать начисления» (на вкладке «Оплата»), выполните расчет в строгой последовательности:
Без предварительного расчета базы на вкладке среднего, итоговый расчет не видит данных и выдает ошибку.
При внесении правок в код обратите внимание на премии. Если премия начисляется фиксированной суммой, у неё часто не заполняются отработанные дни, и это нормально. Однако, если премия зависит от времени, но дни в среднем по ней не нужны (так как они учтены в окладе), предложенный выше код с проверкой ВидВремени <> ОтработанноеВПределахНормы корректно обработает и эту ситуацию.
Также проверьте коэффициенты индексации. В некоторых случаях они могут некорректно применяться к выделенным частям (РК/СН). Если вы видите расхождения в копейках, убедитесь, что коэффициент индексации в таблице среднего заполнен единообразно для всех составных частей заработка за один и тот же месяц.
Ошибка вызвана дублированием отработанного времени для надбавок. Для её устранения:
ПолучитьДанныеДляРасчета2025, исключив суммирование дней для начислений с видом времени, отличным от «ОтработанноеВПределахНормы».