Почему в 1С:ЗУП при начислении отпуска НДФЛ считается вместе с авансом и как это исправить?

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

С начала 2023 года бухгалтеры и специалисты по кадрам столкнулись с серьезной проблемой в программе 1С:Зарплата и Управление Персоналом 3.1. При оформлении межрасчетных документов, таких как Отпуск или Больничный лист, система начинает вести себя непредсказуемо: в таблицу НДФЛ подтягиваются суммы налога с уже выплаченного аванса или зарплаты за прошлый период. В результате сумма налога к удержанию может превышать сумму самих отпускных, а расчетный листок превращается в "кашу" из плюсовых и минусовых записей.

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

Причина возникновения ошибки: технический взгляд

Разберем, что происходит "под капотом" программы. Основной регистр, в котором фиксируются данные для расчета — это РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Когда мы проводим документ Начисление за первую половину месяца, программа создает запись о планируемом налоге. Однако при проведении итогового документа Начисление зарплаты и взносов старые записи аванса часто сторнируются и заменяются новыми.

Выясним причину сбоя: если межрасчетный документ (отпуск) создается в момент, когда аванс выплачен, а итоговая зарплата уже начислена, но еще не выплачена, возникает конфликт дат. Программа видит доход по авансу, но из-за особенностей работы запроса в общем модуле УчетНДФЛ может игнорировать ранее исчисленный налог. В результате в документе Отпуск появляется дополнительная строка НДФЛ с категорией "Оплата труда", хотя в этом документе должен быть только налог с категории "Прочие доходы" (отпускные).

Решение 1: Соблюдение строгой последовательности документов

Самый правильный, с точки зрения методологии 1С, путь — это соблюдение хронологии. Попробуем выполнить следующие шаги:

  1. Убедимся, что документ Начисление за первую половину месяца проведен.
  2. Проверим наличие и проведение документа Ведомость на выплату аванса. Важно: налог считается исчисленным и корректно учтенным только после того, как зафиксирована выплата.
  3. Если вы уже успели создать итоговое Начисление зарплаты и взносов за месяц, попробуйте временно отменить его проведение перед расчетом отпуска.
  4. В документе Отпуск на вкладке "НДФЛ" нажмем кнопку "Обновить налог" (две круговые стрелки). В большинстве случаев, если аванс выплачен полностью, лишние суммы исчезнут.

Решение 2: Манипуляция с планируемыми датами выплаты

Часто проблема кроется в том, что дата выплаты отпуска стоит позже, чем дата выплаты зарплаты в настройках. Рассмотрим обходной маневр, который помог многим пользователям:

  1. Зайдем в документ Начисление зарплаты и взносов за текущий месяц (даже если он еще не окончательный).
  2. В поле "Дата выплаты" установим дату, которая будет МЕНЬШЕ (раньше), чем планируемая дата выплаты отпускных.
  3. Пересчитаем НДФЛ в документе Отпуск. Программа увидит, что на дату выплаты отпуска налог с зарплаты уже должен быть зафиксирован другим документом, и перестанет его дублировать.
  4. После проведения отпуска и ведомости на него, вернем корректную дату выплаты в основное начисление зарплаты.

Решение 3: Программная корректировка (для программистов)

Если вы столкнулись с тем, что типовые релизы (особенно ветка 3.1.23.х и 3.1.24.х начальных версий) продолжают двоить налог даже при правильной последовательности, можно внести изменения в запрос. В общем модуле УчетНДФЛ найдем процедуру РассчитатьНалогПоОсновнойСтавке.

Проанализируем участок кода, где получается информация об исчисленном ранее налоге (обычно это раздел №12 в комментариях кода). Посмотрим на пример исправления запроса, который позволяет исключить сторнирующие записи итогового начисления при межрасчетных выплатах:


// Пример модификации строки замены текста запроса
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ОкончательныйРасчетПоРасчетам", 
    "(Период ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) 
    | И НЕ (РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Регистратор Ссылка Документ.НачислениеЗарплаты 
    | И РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Сумма = РасчетыНалогоплательщиковСБюджетомПоНДФЛ.МесяцНалоговогоПериода) | )");

Внимание: Любое вмешательство в программный код должно быть обосновано. Перед внесением изменений обязательно создайте резервную копию базы и проверьте работу на тестовом примере.

Решение 4: Установка патчей и обновление конфигурации

Фирма 1С признала данное поведение ошибкой (код ошибки 20173751). Для её оперативного исправления был выпущен патч EF_20173784.

Разберем, как проверить наличие исправлений:

  1. Перейдем в раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи).
  2. Убедимся, что в списке есть патчи, касающиеся НДФЛ и документа Отпуск.
  3. Если база находится на официальной поддержке, включите автоматическую загрузку патчей. В релизах 3.1.23.558 / 3.1.24.408 и выше многие из этих проблем уже решены в основном коде.

Решение 5: Особенности для версии КОРП

В версии ЗУП КОРП существует дополнительный инструмент — документ Расчет начислений. Он позволяет разделить процесс расчета сумм и расчета налогов. Если стандартная схема с Начислением зарплаты и взносов дает сбои в межрасчете, попробуйте использовать цепочку:

Начисление за первую половину -> Расчет начислений (без НДФЛ) -> Отпуск -> Окончательное начисление зарплаты.

Как проверить результат?

Чтобы убедиться, что мы решили проблему правильно, а не просто "спрятали" её, воспользуемся отчетом "Подробный анализ НДФЛ по сотруднику". Настроим его за период с начала года.

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

Важный совет: Если вы видите, что НДФЛ в отпуске "поплыл" из-за вычетов (например, вычет применился дважды или не применился вовсе), проверьте последовательность выплат. Вычет в 1С всегда применяется к первому доходу в календарном месяце по дате выплаты. Если отпуск выплачивается 28 января, а аванс был 25 января — вычет должен остаться в авансе.

Подводя итог, скажем: не спешите править НДФЛ "руками" в документе. Ручные правки в 2024 году могут привести к тому, что в следующем месяце программа попытается "выровнять" налог еще раз, что создаст бесконечный цикл корректировок. Используйте метод пересчета и выверку дат выплаты — это самый надежный способ сохранить учет чистым.

← На главную