Почему задваивается оклад в регистре накопления «НДФЛ Сведения о доходах» и как это исправить?

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

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

Причины возникновения ошибки

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

  1. Ошибка в запросе проведения документа (декартово произведение строк). В бюджетных конфигурациях (таких как ЗиКБУ 1.0 или ЗиКГУ) движения по НДФЛ строятся запросом, соединяющим табличную часть начислений с аналитикой финансирования (статьи финансирования, КБК, КОСГУ). Если в тексте запроса нарушено условие связи строк начисления с распределением либо отсутствует группировка СГРУППИРОВАТЬ ПО с агрегатной функцией СУММА(), сумма оклада умножается на число строк аналитики.
  2. Дублирование данных в регистрах сведений. Ошибочные или дублирующиеся записи на одну дату в периодических регистрах сведений (например, статус физического лица как налогоплательщика или история регистраций в налоговом органе) вызывают задвоение строк выборки при соединении таблиц в модуле проведения.
  3. Ошибочный релиз конфигурации. В некоторых релизах разработчики допускают синтаксические или логические неточности в общих модулях подсистемы НДФЛ, которые затем оперативно устраняются в следующих версиях.

Рассмотрим подробнее способы исправления данной ситуации в зависимости от доступности обновлений и прав доступа к коду конфигурации.

Способ 1. Обновление конфигурации на исправленный релиз

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

  1. Проверим наличие свежих обновлений для вашей конфигурации. Как показывает практика, при возникновении критических ошибок расчета НДФЛ выпускаются корректирующие сборки (например, обновление ЗиКБУ до релиза 1.0.61 или обновление ЗиКГУ).
  2. Выполним резервное копирование информационной базы перед установкой обновления.
  3. Установим исправленный релиз конфигурации через режим «Конфигуратор».
  4. Перепроведем проблемные документы Начисление зарплаты сотрудникам организаций и проверим записи в регистре накопления НДФЛ Сведения о доходах.

Способ 2. Корректировка запроса в модуле проведения

Если обновление еще не вышло или его невозможно оперативно установить из-за пикового периода расчета зарплаты и отпусков, исправление можно внести непосредственно в код конфигурации (если она снята с полной поддержки). Разберем, как локализовать и устранить дефект:

  1. Откроем модуль документа Начисление зарплаты сотрудникам организаций либо общий модуль, отвечающий за проведение расчетов по НДФЛ.
  2. Найдем процедуру формирования движений по регистру НДФЛСведенияОДоходах.
  3. Проанализируем текст запроса, выбирающего данные для формирования набора записей. Проверим соединения таблиц начислений со статьями финансирования и КОСГУ.
  4. Добавим агрегирование и группировку по ключевым полям: физическое лицо, код дохода НДФЛ, период регистрации и дата получения дохода.

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


ВЫБРАТЬ
    ТаблицаНачислений.ФизЛицо КАК ФизЛицо,
    ТаблицаНачислений.КодДоходаНДФЛ КАК КодДоходаНДФЛ,
    ТаблицаНачислений.ПериодРегистрации КАК ПериодРегистрации,
    ТаблицаНачислений.ДатаПолученияДохода КАК ДатаПолученияДохода,
    СУММА(ТаблицаНачислений.Результат) КАК СуммаДохода
ИЗ
    Документ.НачислениеЗарплатыСотрудникамОрганизаций.Начисления КАК ТаблицаНачислений
ГДЕ
    ТаблицаНачислений.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
    ТаблицаНачислений.ФизЛицо,
    ТаблицаНачислений.КодДоходаНДФЛ,
    ТаблицаНачислений.ПериодРегистрации,
    ТаблицаНачислений.ДатаПолученияДохода

После сохранения изменений выполним перепроведение расчетных документов за текущий расчетный период.

Способ 3. Выравнивание данных с помощью документа «Корректировка учета по НДФЛ»

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

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

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

Способ 4. Программная свертка движений внешней обработкой

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

  1. Получаем набор записей регистра накопления НДФЛСведенияОДоходах с отбором по конкретному документу-регистратору.
  2. Считываем движения, выгружаем их в таблицу значений и выполняем свертку по измерениям с суммированием ресурса суммы дохода.
  3. Загружаем свернутую таблицу обратно в набор записей и перезаписываем его.

Посмотрим на пример программной перезаписи набора записей регистра:


Набор = РегистрыНакопления.НДФЛСведенияОДоходах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Прочитать();

ТаблицаДвижений = Набор.Выгрузить();
ТаблицаДвижений.Свернуть("ФизЛицо,Период,КодДоходаНДФЛ,СтатьяФинансирования,КОСГУ", "СуммаДохода");

Набор.Загрузить(ТаблицаДвижений);
Набор.Записать();

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

← На главную