Почему в ЗУП 3.1 не рассчитывается НДФЛ при расчете аванса для новых сотрудников?

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

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

Причина возникновения ошибки

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

Способ №1: Программное исправление (для разработчиков)

Если у вас есть возможность внести изменения в код конфигурации, вы можете исправить ошибку на уровне модуля УчетНДФЛ. Существует два варианта правок, которые помогают стабилизировать работу алгоритма.

Вариант 1: Комментирование строки соответствия

В модуле УчетНДФЛ необходимо найти строку 5675 и закомментировать её. Это исключит проблемный участок кода из обработки:


//СоответствиеФизическихЛиц.Вставить(СтрокаРезультата.ФизическоеЛицо, Истина);

Вариант 2: Использование условного распределения результата

Если первый вариант не подходит, можно применить вставку в строке 6927 (адресация строк может отличаться в зависимости от конкретного релиза ЗУП), которая корректно обрабатывает признак окончательного расчета для физического лица:


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

Способ №2: Методологический обход (для пользователей)

Если прямое вмешательство в код невозможно, вы можете решить проблему, изменив последовательность действий в интерфейсе программы:

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

Важные советы по отладке

Многие специалисты сталкиваются с тем, что стандартная точка останова в конфигураторе не срабатывает при нажатии кнопки расчета. Это происходит потому, что расчеты в ЗУП 3.1 часто выносятся в фоновые задания или выполняются в привилегированном режиме на сервере.

Чтобы успешно проанализировать работу кода, выполните следующие действия:

Данная проблема является типичной для периодов перехода на новые законодательные нормы, связанных с исчислением НДФЛ на каждую дату выплаты. Если ошибка повторяется систематически, рекомендуем следить за обновлениями релиза конфигурации, так как фирма «1С» регулярно выпускает исправления для оптимизации механизмов учета налогов.

← На главную