Как устранить ошибки расчета НДФЛ и корректно заполнить «Категории дохода» в 1С:УПП 1.3.240.1 для 2025 года?

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

С 1 января 2025 года вступили в силу масштабные изменения в налоговом законодательстве РФ, касающиеся прогрессивной шкалы НДФЛ. Для пользователей конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 переход на новый порядок расчетов в релизе 1.3.240.1 оказался сопряжен с рядом технических сложностей и программных ошибок. В этой статье мы подробно разберем, как адаптировать систему к новым требованиям, исправить критические ошибки кода и выполнить проверку корректности начисления и удержания НДФЛ по новым правилам.

Почему в документах появилась «Категория дохода» и как её заполнить?

Основное изменение в учете НДФЛ с 2025 года — это введение пятиступенчатой шкалы налогообложения (от 13% до 22%). Однако для определенных видов доходов, таких как районные коэффициенты (РК) и северные надбавки (СН), сохраняются особые условия: для них порог применения повышенной ставки в 15% остается на уровне 5 млн рублей, в то время как для основной зарплаты прогрессия начинается с 2,4 млн рублей.

Для разделения этих налоговых баз в конфигурацию был добавлен реквизит КатегорияДохода. Проанализируем ситуацию: если в документах за январь 2025 года этот реквизит остался пустым, программа не сможет корректно сопоставить доходы с предельными величинами в последующих месяцах. Это приведет к неверному исчислению налога и ошибкам в отчетности 6-НДФЛ.

Рассмотрим способы заполнения этого поля:

  1. Автоматическое заполнение через пересчет: Самый надежный, но трудоемкий способ — использовать специальную обработку, чтобы последовательно перепровести и пересчитать все документы начисления, начиная с первой выплаты 2025 года (даже если это выплата декабрьской зарплаты в январе).
  2. Использование программных механизмов: В системе заложен алгоритм сопоставления кодов дохода и категорий. Выясним причину автоматического незаполнения: часто это связано с тем, что документы были созданы до обновления или перенесены из других баз, из-за чего стандартные алгоритмы заполнения не сработали.

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


// Фрагмент логики определения категории
Если Выборка.СоответствуетОплатеТруда Тогда
    НоваяСтрока.КатегорияДохода = "ОплатаТруда";
ИначеЕсли Выборка.КодДляОтчетности = "2015" Тогда
    НоваяСтрока.КатегорияДохода = "ДоходВНатуральнойФормеОтТрудовойДеятельности";
// Для северных надбавок используется отдельная категория
ИначеЕсли Выборка.Категория = Перечисления.КатегорииДоходовНДФЛ.РайонныеСеверныеНадбавки Тогда
    НоваяСтрока.КатегорияДохода = "РайонныеСеверныеНадбавки";
КонецЕсли;

Устранение ошибки «Индекс находится за границами массива» при расчете НДФЛ

Многие пользователи столкнулись с аварийным завершением работы программы при попытке рассчитать НДФЛ в документах «Начисление зарплаты» или «Отпуск». Ошибка возникает в функции ПолучитьДанныеНДФЛПоРегистратору общего модуля ПроведениеРасчетов. Проанализируем ситуацию: проблема кроется в некорректном распределении стандартных налоговых вычетов, когда у сотрудника присутствуют разные категории доходов. В такой ситуации крайне важно проанализировать правильность начисления НДФЛ с учетом вычетов, исключая из базы не облагаемые налогом суммы.

Для решения этой проблемы разберем по шагам внесение исправлений в код модуля ПроведениеРасчетов (строка примерно 8000+):

Найдите блок кода, где происходит распределение вычетов, и замените его на более безопасный вариант, который проверяет наличие доходов и корректность индекса коэффициента:


// Исправление ошибки расчета вычетов в модуле ПроведениеРасчетов
Если Не ВыборкаРасчетов.КатегорияДохода = "РайонныеСеверныеНадбавки" Тогда 
    НачисленныйДоходЗаДату = ВыборкаРасчетов.ОблагаемыйДоход;
    Если ВсегоВычетовЗаМесяц = 0 Тогда
        ОблагаемыйДоходОТ = Макс(0, ОблагаемыйДоходОТ + ВыборкаРасчетов.ВсеДоходыЗаМесяц);
    Иначе
        // Добавляем проверку на наличие коэффициента перед обращением к массиву
        Если КоэффициентыРаспределенияВычетов.Количество() > ИндексКоэффициента Тогда
            ОблагаемыйДоходОТ = Макс(0, ОблагаемыйДоходОТ + ВыборкаРасчетов.ВсеДоходыЗаМесяц - ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента]);
            ВсегоВычетовЗаМесяцОТ = ВсегоВычетовЗаМесяцОТ + ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента];
            ВсегоВычетовЗаДату = ВсегоВычетовЗаДату + ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента];
        КонецЕсли;
    КонецЕсли;
    ЕстьДоходыОТ = Истина;
Иначе
    // Аналогичная логика для категории РайонныеСеверныеНадбавки
    НачисленныйДоходЗаДату = ВыборкаРасчетов.ОблагаемыйДоход;
    Если ВсегоВычетовЗаМесяц = 0 Тогда
        ОблагаемыйДоходРКСН = Макс(0, ОблагаемыйДоходРКСН + ВыборкаРасчетов.ВсеДоходыЗаМесяц);
    Иначе
        Если КоэффициентыРаспределенияВычетов.Количество() > ИндексКоэффициента Тогда
            ОблагаемыйДоходРКСН = Макс(0, ОблагаемыйДоходРКСН + ВыборкаРасчетов.ВсеДоходыЗаМесяц - ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента]);
            ВсегоВычетовЗаМесяцРКСН = ВсегоВычетовЗаМесяцРКСН + ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента];
            ВсегоВычетовЗаДату = ВсегоВычетовЗаДату + ВсегоВычетовЗаМесяц * КоэффициентыРаспределенияВычетов[ИндексКоэффициента];
        КонецЕсли;
    КонецЕсли;
    ЕстьДоходыРКСН = Истина;
КонецЕсли;

Исправление ошибки «Деление на 0» при распределении доходов

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

Для исправления необходимо найти строку:

Коэффициенты.Добавить(СтрокаРаспределения[ИмяКолонки] / СуммаДоходов);

И заменить её на безопасную конструкцию:


Если СуммаДоходов <> 0 Тогда
    Коэффициенты.Добавить(СтрокаРаспределения[ИмяКолонки] / СуммаДоходов);
Иначе
    Коэффициенты.Добавить(0);
КонецЕсли;

Проблема незачета аванса при расчете по подразделениям

В релизе 1.3.240.1 была замечена ошибка, при которой выплаченный аванс (за первую половину месяца) не сторнируется при окончательном расчете зарплаты, если расчет производится по группе подразделений. Это происходит из-за жесткого условия соответствия подразделения в запросе. Чтобы избежать расхождений, рекомендуется проводить анализ выплаты НДФЛ с учетом фактических дат и платежных поручений для каждой группы начислений.

Рассмотрим исправление в процедуре ДополнитьДвиженияСписаниемАванса модуля документа НачислениеЗарплатыСотрудникамОрганизации. Необходимо найти фрагмент запроса, где проверяется &ПодразделениеОрганизации, и заменить оператор сравнения = на проверку в иерархии или вовсе убрать это условие, если учет авансов ведется в целом по организации:


| И ВЫБОР
|    КОГДА &ПодразделениеОрганизации <> Значение(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
|        ТОГДА ВыплаченныеАвансы.ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)
|    Иначе ИСТИНА
| КОНЕЦ

Особенности учета районных коэффициентов в «среднем заработке»

Важный методологический момент 2025 года: нужно ли выделять РК и СН из суммы отпускных или больничных? Согласно последним разъяснениям ФНС, если районный коэффициент накручивается поверх оклада, он образует отдельную налоговую базу. Если же мы рассчитываем средний заработок, в который уже включены РК и СН за прошлые периоды, то сумму среднего заработка необходимо пропорционально разделять на «основную» базу и базу «северных/районных».

В УПП это реализовано через создание нескольких строк в табличной части НДФЛ для одного начисления. Обратите внимание: если вы правите НДФЛ вручную, обязательно соблюдайте это разделение, иначе отчет 6-НДФЛ будет заполнен некорректно. В ряде случаев может потребоваться выравнивание сумм исчисленного, удержанного и перечисленного НДФЛ, так как разные категории доходов теперь относятся к разным строкам раздела 2 и разным КБК.

Подведем итог: релиз 1.3.240.1 требует ручного вмешательства программиста для исправления ошибок в общем модуле ПроведениеРасчетов. После внесения исправлений рекомендуется выполнить полное последовательное перепроведение документов с начала 2025 года для корректного формирования регистров по категориям доходов.

← На главную