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

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

Ситуация, когда программа «1С:Зарплата и управление персоналом» редакции 3.1 перестает корректно учитывать НДФЛ, исчисленный при выплате аванса, является одной из самых острых проблем для бухгалтера и программиста. Особенно часто это проявляется при расчете сотрудников, чей доход превысил порог в 5 миллионов рублей (ставка 15%), или после обновления конфигурации на новые релизы. В данной статье мы подробно разберем механику возникновения этой ошибки, проанализируем поведение регистров и определим пути решения — от пользовательских до программных.

Механизм зачета НДФЛ с аванса: как это должно работать

Для начала проанализируем стандартный алгоритм работы программы. С 2023 года НДФЛ исчисляется и удерживается при каждой выплате дохода. Процесс выглядит следующим образом:

  1. Начисление за первую половину месяца: Программа рассчитывает сумму дохода и исчисляет НДФЛ (например, 20 000 руб.). В регистре накопления Расчеты налогоплательщиков с бюджетом по НДФЛ появляется запись с видом движения «Приход».
  2. Выплата аванса: При проведении ведомости налог фиксируется как удержанный.
  3. Начисление зарплаты за месяц: На этом этапе программа рассчитывает налог со всей суммы дохода за месяц (например, 50 000 руб.). Чтобы не возникло двойного налогообложения, документ «Начисление зарплаты и взносов» должен сделать две записи в регистр: одну положительную на 50 000 руб. и одну отрицательную (сторнирующую) на 20 000 руб. В итоге в ведомость на выплату зарплаты попадет разница — 30 000 руб.

Проблема заключается в том, что в определенных ситуациях «минусовая» запись (зачет аванса) не формируется. Программа «забывает» о ранее исчисленном налоге и пытается удержать всю сумму (50 000 руб.) повторно.

Анализ причин сбоя в регистрах и отчетах

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

Во-первых, проанализируем колонку «Исчислено налога». Если в строке документа «Начисление зарплаты и взносов» вы видите полную сумму налога без учета аванса, значит, механизм сопоставления доходов дал сбой. Проверьте, не «разъехались» ли даты. Если планируемая дата выплаты в документе начисления аванса относится к одному налоговому периоду (месяцу), а реальная выплата по ведомости или окончательный расчет — к другому, программа может посчитать их независимыми событиями.

Во-вторых, обратим внимание на категорию дохода. Для сотрудников с доходами свыше 5 млн руб. налог разделяется на 13% и 15%. Программа крайне чувствительна к тому, как распределился доход внутри месяца. Если аванс был отнесен к одной категории, а основная зарплата — к другой (из-за перерасчетов или кадровых переводов), сторнирование может не произойти.

Технический разбор: ошибки в общем модуле

Если визуальный анализ отчетов подтверждает проблему, а перезаполнение документов не помогает, причину следует искать в программном коде. Как показывает практика эксплуатации последних релизов ЗУП 3.1 (ветки 3.1.23, 3.1.27 и выше), корень проблемы часто кроется в общем модуле УчетНДФЛ. Выясним причину, изучив логику работы двух критически важных процедур:

  1. ЗачестьАвансовыеДоходыВСчетОкончательногоРасчета
  2. ДополнитьДвиженияСписаниемАванса

Первая процедура отвечает за сопоставление данных, накопленных документом «Начисление за первую половину месяца», с данными итогового начисления. Программа пытается найти соответствие по внутренним идентификаторам строк и аналитике (подразделение, ставка, категория дохода). Если в процессе расчета за месяц данные оклада или других начислений возвращаются некорректно (например, очищаются временные таблицы с авансами), процедура не находит данных для зачета.

Рассмотрим пример логики, которая может быть нарушена в коде (условно):


// Фрагмент логики поиска аванса
Для Каждого СтрокаНДФЛ Из ТаблицаИсчисленногоНалога Цикл
    Если СтрокаНДФЛ.ЭтоАванс Тогда
        // Программа должна найти соответствующую запись в таблице окончательного расчета
        ЗаписьЗачета = НайтиСоответствиеВТаблицеЗарплаты(СтрокаНДФЛ);
        Если ЗаписьЗачета = Неопределено Тогда
            // Если не нашли - сторно не произойдет, возникнет дубль налога
            Продолжить;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Если вы столкнулись с тем, что программа игнорирует аванс именно у сотрудников с «превышением», это часто связано с неверным распределением сумм по ставкам 13/15% внутри этих процедур. В некоторых релизах ошибка возникала из-за того, что алгоритм «зачета» срабатывал только для основной ставки, игнорируя налог с превышения.

Способы решения проблемы

Рассмотрим пошагово, что можно предпринять для исправления ситуации:

1. Проверка настроек и дат выплаты

Прежде чем лезть в код, проанализируем простые организационные моменты. Убедитесь, что в документе «Начисление зарплаты и взносов» указана корректная Дата выплаты (на вкладке «Дополнительно» или внизу формы). Она должна соответствовать реальной дате, когда сотрудники получат деньги. Если дата выплаты аванса и дата выплаты зарплаты попадают на разные границы налоговых периодов, программа может вести себя непредсказуемо.

2. Индивидуальный пересчет сотрудника

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

3. Удаление и переподбор (не просто перезаполнение)

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

4. Установка исправляющих патчей

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

5. Проверка регистра «Зарплата к выплате»

Проанализируем ситуацию: если аванс был начислен, но ведомость по нему не была проведена или была удалена, программа не будет «зачитывать» налог, так как факт выплаты дохода не зафиксирован. Убедитесь, что в регистре Зарплата к выплате по данному сотруднику нет «зависших» остатков, которые мешают закрытию цепочки расчетов.

Резюмируем: отсутствие зачета НДФЛ с аванса — это чаще всего следствие либо программного сбоя в механизмах сопоставления строк (что лечится патчами или обновлением), либо следствие нарушения хронологии документов и их аналитики (категории дохода, ставки 13/15%). Тщательный анализ регистра Расчеты налогоплательщиков с бюджетом по НДФЛ через стандартные отчеты поможет вам локализовать ошибку и принять верное решение.

← На главную