При переходе с устаревших версий программы на 1С:Зарплата и управление персоналом 3.1 многие пользователи сталкиваются с неприятной ситуацией: при формировании отчета 6-НДФЛ за первый отчетный период после переноса Раздел 2 заполняется некорректно. В нем появляются «странные» строки, где даты выплаты и удержания указаны, а сумма выплаченного дохода (строка 100 или 110 в старых формах) равна нулю или заполнена хаотично. Разберем детально, почему это происходит и как исправить ситуацию, не прибегая к тотальному ручному вводу данных.
Давайте проанализируем, как строится отчетность по НДФЛ в версии 3.1. В отличие от версии 2.5, где учет был более «плоским», в ЗУП 3.1 реализована жесткая цепочка взаимосвязей между начисленным доходом, исчисленным налогом и фактом его выплаты (удержания). Основным «поставщиком» данных для Раздела 2 6-НДФЛ является регистр накопления Расчеты налогоплательщиков с бюджетом по НДФЛ.
Рассмотрим ситуацию, возникшую при «кратком» (рекомендованном) переносе данных на определенную дату (например, на 01.10.2017). В этом случае исторические данные попадают в новую базу через документы Перенос данных. Проблема заключается в следующем:
Расчеты налогоплательщиков с бюджетом по НДФЛ поле Сумма выплаченного дохода отсутствовало как класс. Программа фиксировала только суммы самого налога.Перенос данных для этого регистра часто оставалась пустой.Ведомость в банк или Ведомость в кассу), программа пытается «подтянуть» данные об удержанном налоге, ссылаясь на документы-основания. Если основанием является Перенос данных, в котором не указана сумма дохода, в регистре фиксируется удержание налога с нулевым доходом.Чтобы убедиться в диагнозе, давайте посмотрим на движения, которые делает документ Ведомость. Перейдите в движения документа и найдите регистр Расчеты налогоплательщиков с бюджетом по НДФЛ. Если вы видите записи, где в колонке Налог стоит сумма, а в колонке Доход (или Сумма выплаченного дохода) — пусто, значит, проблема именно в исходных данных переноса.
Обратите внимание на документ-основание. Если там указан документ Перенос данных, нам придется корректировать именно его. Рассмотрим подробнее структуру этого документа.
Документы Перенос данных с кодами НДФЛ, РНДФЛ или аналогичными содержат записи регистров накопления. Нам необходимо добиться того, чтобы в записях регистра Расчеты налогоплательщиков с бюджетом по НДФЛ колонка с доходом была заполнена.
Важный нюанс: Если база небольшая, вы можете зайти в документ, найти нужную строку по сотруднику и проставить сумму дохода вручную. После перепроведения документа Перенос данных и последующего перепроведения Ведомости, данные в 6-НДФЛ встанут корректно.
Однако, если сотрудников сотни или тысячи, ручной ввод невозможен. Рассмотрим логику автоматизированного исправления. Обычно данные о доходах при переносе корректно попадают в другой регистр — Учет доходов для исчисления НДФЛ. Идея решения заключается в том, чтобы программно сопоставить данные этих двух регистров внутри одного документа переноса.
Для массового исправления ситуации рекомендуется написать небольшую обработку. Логика алгоритма должна быть следующей: программа обходит документы Перенос данных, считывает суммы из регистра доходов и переносит их в соответствующие строки регистра расчетов по НДФЛ.
Рассмотрим примерный фрагмент кода, который иллюстрирует принцип поиска и заполнения данных:
// Пример логики обхода набора записей регистра в документе Перенос данных
НаборЗаписей = РегистрыНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументПереносаСсылка);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.СуммаВыплаченногоДохода = 0 Тогда
// Здесь должен быть поиск соответствия из регистра "Учет доходов для исчисления НДФЛ"
// по сотруднику, дате получения дохода и коду дохода.
НайденныйДоход = НайтиДоходПоПараметрам(Запись.Сотрудник, Запись.ДатаПолученияДохода, Запись.КодДохода);
Если НайденныйДоход > 0 Тогда
Запись.СуммаВыплаченногоДохода = НайденныйДоход;
КонецЕсли;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
После выполнения такой обработки необходимо выполнить групповое перепроведение ведомостей, чтобы они пересчитали свои движения на основании обновленных данных переноса. Выясним причину: почему просто перепроведения ведомостей недостаточно? Потому что при проведении ведомость «защелкивает» данные, актуальные на момент проведения. Если в Перенос данных были нули, они «перетекли» в движения ведомости. Обновив источник, мы должны заставить ведомость обновить и свои записи.
Если вы только планируете переход с ЗУП 2.5 на ЗУП 3.1, примите во внимание следующие советы:
Перерасчет зарплаты. После любых массовых корректировок документов прошлого периода (каким является перенос данных), обязательно проверяйте этот регистр. Программа может попытаться «доначислить» или «пересчитать» налог текущим периодом, что приведет к новым ошибкам в отчетности.Таким образом, мы выяснили, что «дикие» записи в 6-НДФЛ — это результат архитектурного разрыва между старой и новой версиями программы. Ключ к решению — наполнение аналитики по доходам в документах Перенос данных. Это вернет стройность учету и позволит сформировать корректную декларацию без ручной правки каждой строки в самом отчете.