Ситуация, когда программа «1С:Зарплата и управление персоналом» редакции 3.1 перестает корректно учитывать НДФЛ, исчисленный при выплате аванса, является одной из самых острых проблем для бухгалтера и программиста. Особенно часто это проявляется при расчете сотрудников, чей доход превысил порог в 5 миллионов рублей (ставка 15%), или после обновления конфигурации на новые релизы. В данной статье мы подробно разберем механику возникновения этой ошибки, проанализируем поведение регистров и определим пути решения — от пользовательских до программных.
Для начала проанализируем стандартный алгоритм работы программы. С 2023 года НДФЛ исчисляется и удерживается при каждой выплате дохода. Процесс выглядит следующим образом:
Расчеты налогоплательщиков с бюджетом по НДФЛ появляется запись с видом движения «Приход».Проблема заключается в том, что в определенных ситуациях «минусовая» запись (зачет аванса) не формируется. Программа «забывает» о ранее исчисленном налоге и пытается удержать всю сумму (50 000 руб.) повторно.
Чтобы понять, почему программа «не видит» налог, мы должны обратиться к отчету «Подробный анализ НДФЛ по сотруднику». Рекомендуется формировать его не за один месяц, а за период с начала года, так как НДФЛ рассчитывается нарастающим итогом. Рассмотрим ключевые точки проверки:
Во-первых, проанализируем колонку «Исчислено налога». Если в строке документа «Начисление зарплаты и взносов» вы видите полную сумму налога без учета аванса, значит, механизм сопоставления доходов дал сбой. Проверьте, не «разъехались» ли даты. Если планируемая дата выплаты в документе начисления аванса относится к одному налоговому периоду (месяцу), а реальная выплата по ведомости или окончательный расчет — к другому, программа может посчитать их независимыми событиями.
Во-вторых, обратим внимание на категорию дохода. Для сотрудников с доходами свыше 5 млн руб. налог разделяется на 13% и 15%. Программа крайне чувствительна к тому, как распределился доход внутри месяца. Если аванс был отнесен к одной категории, а основная зарплата — к другой (из-за перерасчетов или кадровых переводов), сторнирование может не произойти.
Если визуальный анализ отчетов подтверждает проблему, а перезаполнение документов не помогает, причину следует искать в программном коде. Как показывает практика эксплуатации последних релизов ЗУП 3.1 (ветки 3.1.23, 3.1.27 и выше), корень проблемы часто кроется в общем модуле УчетНДФЛ. Выясним причину, изучив логику работы двух критически важных процедур:
ЗачестьАвансовыеДоходыВСчетОкончательногоРасчетаДополнитьДвиженияСписаниемАвансаПервая процедура отвечает за сопоставление данных, накопленных документом «Начисление за первую половину месяца», с данными итогового начисления. Программа пытается найти соответствие по внутренним идентификаторам строк и аналитике (подразделение, ставка, категория дохода). Если в процессе расчета за месяц данные оклада или других начислений возвращаются некорректно (например, очищаются временные таблицы с авансами), процедура не находит данных для зачета.
Рассмотрим пример логики, которая может быть нарушена в коде (условно):
// Фрагмент логики поиска аванса
Для Каждого СтрокаНДФЛ Из ТаблицаИсчисленногоНалога Цикл
Если СтрокаНДФЛ.ЭтоАванс Тогда
// Программа должна найти соответствующую запись в таблице окончательного расчета
ЗаписьЗачета = НайтиСоответствиеВТаблицеЗарплаты(СтрокаНДФЛ);
Если ЗаписьЗачета = Неопределено Тогда
// Если не нашли - сторно не произойдет, возникнет дубль налога
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если вы столкнулись с тем, что программа игнорирует аванс именно у сотрудников с «превышением», это часто связано с неверным распределением сумм по ставкам 13/15% внутри этих процедур. В некоторых релизах ошибка возникала из-за того, что алгоритм «зачета» срабатывал только для основной ставки, игнорируя налог с превышения.
Рассмотрим пошагово, что можно предпринять для исправления ситуации:
Прежде чем лезть в код, проанализируем простые организационные моменты. Убедитесь, что в документе «Начисление зарплаты и взносов» указана корректная Дата выплаты (на вкладке «Дополнительно» или внизу формы). Она должна соответствовать реальной дате, когда сотрудники получат деньги. Если дата выплаты аванса и дата выплаты зарплаты попадают на разные границы налоговых периодов, программа может вести себя непредсказуемо.
В документе «Начисление зарплаты и взносов» перейдите на вкладку «НДФЛ». Попробуйте не перезаполнять весь документ, а выбрать конкретного «проблемного» сотрудника и нажать правую кнопку мыши — «Пересчитать НДФЛ». Это заставляет программу заново инициализировать механизмы поиска авансовых доходов именно для этого физлица.
Часто помогает полное удаление строки сотрудника из документа начисления зарплаты (на всех вкладках: Начисления, Пособия, НДФЛ, Взносы) с последующим использованием кнопки «Подбор». Это очищает кэшированные идентификаторы строк, которые могли заблокировать корректный зачет аванса.
Фирма «1С» оперативно выпускает исправления (патчи) для подобных массовых ошибок. Проверьте раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи). Ищите патчи, в описании которых фигурируют ключевые слова «НДФЛ», «Аванс», «Исчисление». Часто установка одного небольшого патча решает проблему без необходимости обновления всей конфигурации.
Проанализируем ситуацию: если аванс был начислен, но ведомость по нему не была проведена или была удалена, программа не будет «зачитывать» налог, так как факт выплаты дохода не зафиксирован. Убедитесь, что в регистре Зарплата к выплате по данному сотруднику нет «зависших» остатков, которые мешают закрытию цепочки расчетов.
Резюмируем: отсутствие зачета НДФЛ с аванса — это чаще всего следствие либо программного сбоя в механизмах сопоставления строк (что лечится патчами или обновлением), либо следствие нарушения хронологии документов и их аналитики (категории дохода, ставки 13/15%). Тщательный анализ регистра Расчеты налогоплательщиков с бюджетом по НДФЛ через стандартные отчеты поможет вам локализовать ошибку и принять верное решение.