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

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

В конфигурации 1С:Управление производственным предприятием (УПП) ред. 1.3, в частности на релизах 1.3.240 - 1.3.242, пользователи столкнулись с проблемой: при расчете зарплаты за декабрь итоговая сумма НДФЛ исчисляется неверно. Если сотруднику был начислен аванс, то в документе финального расчета зарплаты сумма налога рассчитывается с дохода за вычетом этого аванса, что приводит к занижению НДФЛ.

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

Выясним причину: технический анализ ошибки

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

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

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

Теперь, когда мы понимаем корень проблемы, рассмотрим, как ее можно исправить.

Решение 1: Исправление ошибки в коде конфигурации (рекомендуется для программистов)

Это наиболее правильный и долгосрочный способ решения проблемы. Он заключается во внесении небольших изменений в код конфигурации. Этот метод устраняет саму причину ошибки, и вам не придется прибегать к ручным операциям каждый раз. Важно: для этого необходим доступ к конфигуратору и права на изменение объектов конфигурации.

Разберем по шагам, что нужно сделать:

  1. Откройте конфигурацию в режиме «Конфигуратор».
  2. Найдите общий модуль ПроведениеРасчетов.
  3. Внутри этого модуля найдите функцию ПолучитьДанныеНДФЛПоРегистратору. Ошибка, как правило, проявляется не в самой этой функции, а там, где ее результат используется. В частности, ошибка была найдена в коде, отвечающем за печать формы Т-60 в документе «Начисление отпуска сотрудникам организаций».
  4. Проблема заключается в том, что при суммировании итоговой суммы налога программа пытается вычесть значения из полей, которые не были получены. Чтобы это исправить, нужно закомментировать строки, которые обращаются к проблемным полям.

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


СуммаНДФЛ = 0;
Для Каждого СтрокаНДФЛ Из ТаблицаНДФЛ Цикл
    СуммаНДФЛ = СуммаНДФЛ + СтрокаНДФЛ.Налог + СтрокаНДФЛ.НалогСПревышения + СтрокаНДФЛ.НалогСПревышения18 + СтрокаНДФЛ.НалогСПревышения20 + СтрокаНДФЛ.НалогСПревышения22
    // Следующая строка содержит ошибку, так как некоторых полей нет в ТаблицаНДФЛ
    - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежей - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения18 - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения20 - 
    СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения22;
КонецЦикла;

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


СуммаНДФЛ = 0;
Для Каждого СтрокаНДФЛ Из ТаблицаНДФЛ Цикл
    СуммаНДФЛ = СуммаНДФЛ + СтрокаНДФЛ.Налог + СтрокаНДФЛ.НалогСПревышения + СтрокаНДФЛ.НалогСПревышения18 + СтрокаНДФЛ.НалогСПревышения20 + СтрокаНДФЛ.НалогСПревышения22
    // Закомментировали обращение к полям, которые не возвращаются функцией
    // - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения18 - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения20 - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения22;
    - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежей - СтрокаНДФЛ.ЗачтеноАвансовыхПлатежейСПревышения;
КонецЦикла;

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

Решение 2: Обходные пути без изменения конфигурации (для бухгалтеров и пользователей)

Если у вас нет возможности или прав для изменения кода, можно воспользоваться одним из нескольких обходных путей. Они требуют больше ручных действий, но позволяют добиться верного результата.

Метод А: Ручная корректировка регистра «НДФЛ расчеты с бюджетом»

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

  1. Проведите документ «Начисление зарплаты сотрудникам организаций» как есть, даже с неверной суммой НДФЛ.
  2. Создайте документ «Корректировка записей регистров накопления».
  3. Нажмите «Настройка состава регистров» и выберите регистр НДФЛ расчеты с бюджетом.
  4. В табличной части документа добавьте строки и вручную откорректируйте суммы исчисленного налога для каждого сотрудника, по которому расчет был неверным. Вам нужно будет сделать движения, которые исправят некорректные записи, созданные документом начисления.

Этот метод требует внимательности и хорошего понимания работы регистров, но он позволяет исправить данные, не трогая код.

Метод Б: Манипуляции с документом начисления аванса

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

Пошаговая инструкция:

  1. Найдите документ «Начисление зарплаты сотрудникам организаций», которым вы начисляли аванс.
  2. Создайте его копию.
  3. В новой скопированной документе очистите все закладки (Начисления, Удержания и т.д.), кроме закладки «НДФЛ». На ней должны остаться строки с рассчитанным налогом по сотрудникам.
  4. На закладке «НДФЛ» измените режим расчета с «Аванс по расчету за первую половину месяца» на «Текущий месяц».
  5. Проведите этот новый документ-копию. Он создаст в системе правильные движения по исчисленному НДФЛ.
  6. После этого откройте ваш основной документ «Начисление зарплаты сотрудникам организаций» за декабрь, перезаполните и пересчитайте его. Теперь система должна увидеть ранее исчисленный налог и рассчитать итоговую сумму корректно.

Метод В: Разделение документов начисления

Если проблема возникает только у одного или нескольких сотрудников, можно попробовать изолировать их расчет.

  1. Распроведите текущий документ начисления зарплаты за декабрь.
  2. Создайте один документ «Начисление зарплаты сотрудникам организаций» для сотрудников, у которых расчет проходит корректно.
  3. Создайте второй, отдельный документ начисления для тех сотрудников, у которых возникает проблема. Иногда разделение расчета на разные документы помогает системе правильно обработать данные. В некоторых случаях можно даже разделить разовые начисления и окладную часть в разные документы.

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

← На главную