С начала 2023 года бухгалтеры и специалисты по кадрам столкнулись с серьезной проблемой в программе 1С:Зарплата и Управление Персоналом 3.1. При оформлении межрасчетных документов, таких как Отпуск или Больничный лист, система начинает вести себя непредсказуемо: в таблицу НДФЛ подтягиваются суммы налога с уже выплаченного аванса или зарплаты за прошлый период. В результате сумма налога к удержанию может превышать сумму самих отпускных, а расчетный листок превращается в "кашу" из плюсовых и минусовых записей.
Проанализируем ситуацию: это происходит из-за перехода на новый порядок учета НДФЛ (согласно 263-ФЗ), где датой получения дохода считается дата фактической выплаты денег. Программа теперь рассчитывает налог нарастающим итогом на конкретную дату. Если последовательность документов нарушена или регистрация доходов в регистрах прошла с ошибками, 1С "не видит", что налог с аванса уже был исчислен, и пытается "добрать" его в первом же открытом документе. Рассмотрим подробнее, как решить эту проблему несколькими способами.
Разберем, что происходит "под капотом" программы. Основной регистр, в котором фиксируются данные для расчета — это РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Когда мы проводим документ Начисление за первую половину месяца, программа создает запись о планируемом налоге. Однако при проведении итогового документа Начисление зарплаты и взносов старые записи аванса часто сторнируются и заменяются новыми.
Выясним причину сбоя: если межрасчетный документ (отпуск) создается в момент, когда аванс выплачен, а итоговая зарплата уже начислена, но еще не выплачена, возникает конфликт дат. Программа видит доход по авансу, но из-за особенностей работы запроса в общем модуле УчетНДФЛ может игнорировать ранее исчисленный налог. В результате в документе Отпуск появляется дополнительная строка НДФЛ с категорией "Оплата труда", хотя в этом документе должен быть только налог с категории "Прочие доходы" (отпускные).
Самый правильный, с точки зрения методологии 1С, путь — это соблюдение хронологии. Попробуем выполнить следующие шаги:
Начисление за первую половину месяца проведен.Ведомость на выплату аванса. Важно: налог считается исчисленным и корректно учтенным только после того, как зафиксирована выплата.Начисление зарплаты и взносов за месяц, попробуйте временно отменить его проведение перед расчетом отпуска.Отпуск на вкладке "НДФЛ" нажмем кнопку "Обновить налог" (две круговые стрелки). В большинстве случаев, если аванс выплачен полностью, лишние суммы исчезнут.Часто проблема кроется в том, что дата выплаты отпуска стоит позже, чем дата выплаты зарплаты в настройках. Рассмотрим обходной маневр, который помог многим пользователям:
Начисление зарплаты и взносов за текущий месяц (даже если он еще не окончательный).Отпуск. Программа увидит, что на дату выплаты отпуска налог с зарплаты уже должен быть зафиксирован другим документом, и перестанет его дублировать.Если вы столкнулись с тем, что типовые релизы (особенно ветка 3.1.23.х и 3.1.24.х начальных версий) продолжают двоить налог даже при правильной последовательности, можно внести изменения в запрос. В общем модуле УчетНДФЛ найдем процедуру РассчитатьНалогПоОсновнойСтавке.
Проанализируем участок кода, где получается информация об исчисленном ранее налоге (обычно это раздел №12 в комментариях кода). Посмотрим на пример исправления запроса, который позволяет исключить сторнирующие записи итогового начисления при межрасчетных выплатах:
// Пример модификации строки замены текста запроса
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ОкончательныйРасчетПоРасчетам",
"(Период ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| И НЕ (РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Регистратор Ссылка Документ.НачислениеЗарплаты
| И РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Сумма = РасчетыНалогоплательщиковСБюджетомПоНДФЛ.МесяцНалоговогоПериода) | )");
Внимание: Любое вмешательство в программный код должно быть обосновано. Перед внесением изменений обязательно создайте резервную копию базы и проверьте работу на тестовом примере.
Фирма 1С признала данное поведение ошибкой (код ошибки 20173751). Для её оперативного исправления был выпущен патч EF_20173784.
Разберем, как проверить наличие исправлений:
Отпуск.В версии ЗУП КОРП существует дополнительный инструмент — документ Расчет начислений. Он позволяет разделить процесс расчета сумм и расчета налогов. Если стандартная схема с Начислением зарплаты и взносов дает сбои в межрасчете, попробуйте использовать цепочку:
Начисление за первую половину -> Расчет начислений (без НДФЛ) -> Отпуск -> Окончательное начисление зарплаты.
Чтобы убедиться, что мы решили проблему правильно, а не просто "спрятали" её, воспользуемся отчетом "Подробный анализ НДФЛ по сотруднику". Настроим его за период с начала года.
Проанализируем колонку "Документ-основание" и "Дата получения дохода". Если мы видим, что по одной и той же дате получения дохода (например, день выплаты аванса) налог зафиксирован разными документами (и авансом, и отпуском), значит, задвоение осталось. В идеальном варианте налог с аванса должен быть привязан только к Начислению за первую половину месяца (или итоговому расчету зарплаты), а налог с отпуска — только к документу Отпуск.
Важный совет: Если вы видите, что НДФЛ в отпуске "поплыл" из-за вычетов (например, вычет применился дважды или не применился вовсе), проверьте последовательность выплат. Вычет в 1С всегда применяется к первому доходу в календарном месяце по дате выплаты. Если отпуск выплачивается 28 января, а аванс был 25 января — вычет должен остаться в авансе.
Подводя итог, скажем: не спешите править НДФЛ "руками" в документе. Ручные правки в 2024 году могут привести к тому, что в следующем месяце программа попытается "выровнять" налог еще раз, что создаст бесконечный цикл корректировок. Используйте метод пересчета и выверку дат выплаты — это самый надежный способ сохранить учет чистым.