Почему в 1С:УПП 1.3 занижается сумма удержаний по исполнительным листам из-за задвоения НДФЛ?

Программист 1С v8.3 (Обычные формы) Налоговый учет Промышленность, строительство и АПК
← На главную

С начала 2023 года вступили в силу масштабные изменения в порядке исчисления и удержания НДФЛ. Теперь налог должен исчисляться и удерживаться при каждой выплате дохода, включая аванс (заработную плату за первую половину месяца). Эти изменения затронули механизмы расчета базы для плановых удержаний, таких как алименты или исполнительные листы процентом. В конфигурации 1С:Управление производственным предприятием 1.3 пользователи столкнулись с проблемой: при расчете итоговой суммы удержания за месяц из базы дважды вычитается НДФЛ — сначала исчисленный с аванса, а затем итоговый за месяц, который уже включает в себя авансовый налог.

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

Разбор технической причины проблемы

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

Теперь же в регистре накопления НДФЛ расчеты с бюджетом за один месяц появляются две (или более) записи с видом строки Начисление:

  1. Запись от документа Начисление зарплаты за первую половину месяца.
  2. Запись от документа Начисление зарплаты (окончательный расчет).

При этом в окончательном расчете УПП сторнирует «авансовый» налог (запись с реквизитом ЗарегистрированоПриНачисленииАванса = Истина) и фиксирует полную сумму налога. Однако алгоритм сбора базы для удержаний в общем модуле ПроведениеРасчетов не учитывает эти тонкости и просто суммирует все приходные записи по налогу за период. В результате получается, что налог вычитается в двойном объеме, база занижается, а получатель алиментов недополучает деньги.

Данная ошибка официально зарегистрирована фирмой «1С» под номером 60005506.

Вариант 1: Временный методический обход проблемы

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

  1. Распроведите документ Начисление зарплаты за первую половину месяца за текущий месяц.
  2. Пересчитайте удержания в итоговом документе Начисление зарплаты за месяц. Поскольку авансовый расчет не проведен, программа увидит только одну запись по НДФЛ.
  3. Проведите итоговый документ Начисление зарплаты.
  4. Снова проведите документ аванса (это важно для корректного формирования отчетности и учета выплат).

Важно: Этот метод является трудоемким и подходит только для небольшого количества сотрудников или как экстренная мера.

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

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

Вариант 3: Техническое исправление кода (для программистов)

Если ваша конфигурация находится на поддержке с возможностью изменения, наиболее правильным решением будет правка запроса в общем модуле ПроведениеРасчетов. Выясним, где именно происходит ошибка: нам нужна процедура ДописатьАлгоритмВЗапрос.

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

Пример изменения кода:


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

Добавление проверки ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) позволяет отсечь те записи, которые были созданы предварительными расчетами, и брать в расчет базы только «финальный» НДФЛ.

Вариант 4: Комплексная правка запроса

Существует и более радикальный вариант исправления, который полностью перестраивает логику получения исчисленного налога через временные таблицы. Это помогает избежать проблем, если в середине месяца были сторно-записи или корректировки.

Проанализируем структуру запроса, предложенного сообществом:


Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Удержания.НомерСтроки КАК НомерСтроки,
| Удержания.ФизЛицо КАК Физлицо,
| НАЧАЛОПЕРИОДА(Удержания.БазовыйПериодНачало, МЕСЯЦ) КАК МесяцУдержания
|ПОМЕСТИТЬ ВТФизлица
|ИЗ
| РегистрРасчета.УдержанияРаботниковОрганизаций КАК Удержания
|ГДЕ
| Удержания.ВидРасчета В(&парамМассивУдержанийИЛ)
| И Удержания.Регистратор = &парамРегистратор
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Физлица.НомерСтроки КАК НомерСтроки,
| НДФЛРасчетыСБюджетом.Налог + НДФЛРасчетыСБюджетом.НалогСПревышения КАК ИсчисленныйНалог
|ПОМЕСТИТЬ ВТИсчисленныйНДФЛ_Промежуточный
|ИЗ
| ВТФизлица КАК Физлица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
| ПО Физлица.Физлицо = НДФЛРасчетыСБюджетом.ФизЛицо
| И (НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ) = Физлица.МесяцУдержания)
|ГДЕ
| НДФЛРасчетыСБюджетом.Организация = &парамОрганизация
| И НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И НДФЛРасчетыСБюджетом.ВидСтроки = ЗНАЧЕНИЕ(Перечисление.НДФЛРасчетыСБюджетомВидСтроки.Начисление)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Физлица.НомерСтроки,
| -СУММА(НДФЛРасчетыСБюджетом.Налог + НДФЛРасчетыСБюджетом.НалогСПревышения)
|ИЗ
| ВТФизлица КАК Физлица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
| ПО Физлица.Физлицо = НДФЛРасчетыСБюджетом.ФизЛицо
| И (НАЧАЛОПЕРИОДА(Физлица.МесяцУдержания, МЕСЯЦ) = НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.ЗарегистрированоПриНачисленииАванса, МЕСЯЦ))
| И (НДФЛРасчетыСБюджетом.ВидСтроки В (ЗНАЧЕНИЕ(Перечисление.НДФЛРасчетыСБюджетомВидСтроки.Начисление), ЗНАЧЕНИЕ(Перечисление.НДФЛРасчетыСБюджетомВидСтроки.ЗачетАвансовыхПлатежей)))
|СГРУППИРОВАТЬ ПО
| Физлица.НомерСтроки";

Данный подход позволяет системе корректно вычесть суммы, которые были «зачтены» из аванса, не допуская их повторного влияния на базу исполнительного листа.

Рекомендации по обновлению

Необходимо помнить, что 1С:УПП 1.3 находится на ограниченной поддержке, однако критические ошибки законодательства исправляются в плановых релизах. Ошибка 60005506 была исправлена разработчиками в релизах, начиная с 1.3.197.1 и выше.

Рассмотрим план действий для системного решения проблемы:

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

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

← На главную