Регламентированный отчет 6-НДФЛ: выводим в расшифровке Раздела 2 документ-регистратор. ЗУП 3.1











В преддверии сдачи отчета 6-НДФЛ за год хочу поделиться методикой доработки его расшифровки. В типовом решении расшифровка Раздела 2 выводится только в разрезе физических лиц, что может вызывать определенные трудности при работе с большим объемом данных. Представленное решение выводит расшифровку также в разрезе регистраторов, что позволяет оперативно проанализировать полученные суммы без формирования дополнительных отчетов. А знаете, чего для этого не хватает в типовой конфигурации? Одной строчки кода и одного поля в настройке макета СКД 🙂 UPD: для приложенного к статье расширения исправлена ошибка формирования первого раздела.

Для отчета 6-НДФЛ за 2024 год срок сдачи наступит 01.04.2024. Но начинать работу над ним стоит конечно раньше чем 31.03.2024 🙂 Предлагаю сделать немного удобнее работу с этим отчетом вашим расчетчикам, особенно если у них 100500 обособленных подразделений, миллион сотрудников и сдача отчетности становится настоящим испытанием для нервной системы. 

 

 

Внимание! Публикация состоит из двух частей: расследование случая и методики доработки.

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

 При изучении устройства модулей и при отладке регламентированного отчета 6-НДФЛ я наткнулась на странную вещь в расшифровке второго раздела: в наборе данных макета СКД присутствует поле "Регистратор", но при этом расшифровка формируется только в разрезе физического лица:

Оказалось, что прежде всего у отчета "Расшифровка6НДФЛ" в схеме компоновки данных макета "Раздел2" данное поле не указано в настройках:

 

    А зачем тогда оно в наборе?

Указываем:

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

 

Из модуля отчета "Расшифровка6НДФЛ" переходим в общие модули к функционалу заполнения источника данных из строки:

ИсточникРасшифровки.РасчетПоказателей6НДФЛ(Параметры.ИмяРасчета, ДатаНачалаНП, ДатаКонцаНП, ?(Параметры.ДатаПодписи > ДатаКонцаНП,Параметры.ДатаПодписи, ДатаКонцаНП), Организация, РегистрацияВНалоговомОргане, ВнешниеНаборыДанных, Истина);

(На деле "ИсточникРасшифровки" это ОбщийМодуль УчетНДФЛ )

Доходим до итоговой процедуры "РасчетПоказателей_6НДФЛ_2024Кв1(НачалоПериода, ОкончаниеПериода, ДатаПодписи, Организация, РегистрацияВНалоговомОргане, ОписаниеТаблиц, ПодробныеДанные)". Кстати, если у вас стоит задача найти ошибку в формировании 6-НДФЛ, рекомендую искать ее в этой процедуре, т.к. практически в ней находится весь функционал. Я пишу это и поглядываю, не выпустили ли вдруг ЗУП 3.1.10 в котором вообще все по-другому.

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

Продолжаем отладку и в итоге выясняется, что строка номер 12245 (в другом релизе или при наличии доработок номер строки может не совпадать)

ВременнаяТаблица.Свернуть("ДатаФактическогоПолученияДохода,П000020010001,ДатаУдержанияНалога,П000020011001,СрокПеречисленияНалога,П000020012001" + ?(ПодробныеДанные, ",ФизическоеЛицо", ""),"П000020014001,П000020013001");

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

 

 ТаблицаЗначений (ValueTable)

Свернуть (GroupBy)

Синтаксис:

Свернуть(<КолонкиГруппировок>, <КолонкиСуммирования>)

Параметры:

<КолонкиГруппировок> (обязательный)

Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.

<КолонкиСуммирования> (необязательный)

Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.

Описание:

Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.

"Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений" — таким образом, значения колонки Регистратор были очищены, т.к. ее не указали в качестве колонки группировки. Также обращаем внимание на то, что колонка "ФизическоеЛицо" является колонкой группировки в зависимости от условия "ПодробныеДанные":

?(ПодробныеДанные, ",ФизическоеЛицо", "")

Для чего нужно это условие? Дело в том, что для получения данных для заполнения отчета и получения данных для вывода расшифровки отвечает одна и та же процедура — "РасчетПоказателей_6НДФЛ_2024Кв1". А булево  "ПодробныеДанные " определяет, происходит заполнение самого Раздела 2 отчета 6-НДФЛ (ПодробныеДанные = ложь) или происходит получение данных для вывода его расшифровки (ПодробныеДанные = истина). Таким образом, мы можем воспользоваться этим условием дополнив его для получения нужного нам результата — выводить данные для расшифровки в разрезе регистраторов и получать сводные данные для заполнения Раздела 2:

?(ПодробныеДанные, ",ФизическоеЛицо, Регистратор", "")

Тогда строка группировки таблицы будет выглядеть следующим образом:

ВременнаяТаблица.Свернуть("ДатаФактическогоПолученияДохода,П000020010001,ДатаУдержанияНалога,П000020011001,СрокПеречисленияНалога,П000020012001" + ?(ПодробныеДанные, ",ФизическоеЛицо, Регистратор", ""),"П000020014001,П000020013001");

Готово!

Теперь расшифровка выводится в нужном виде, при этом функционал заполнения Раздела 2 не был изменен:

 

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

Методика доработки конфигурации:

ВАРИАНТ №1.

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

 

 

ВАРИАНТ №2.

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

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

Включаем возможность изменения для общего модуля "УчетНДФЛ". Находим процедуру "РасчетПоказателей_6НДФЛ_2024Кв1". Изменяем условие, как показано на рисунке:

Готово!

Подробная последовательность действий в случае, если конфигурация находится на полной поддержке:

Внимание! Если конфигурация находится на полной поддержке, т.е. обновления проходят на типовой конфигурации в полностью автоматическом режиме — подумайте, возможно стоит рассмотреть следующий вариант № 3 — расширение конфигурации, при котором конфигурация остается на полной поддержке. Если же вы включаете изменение для конфигурации как в этом варианте, то обновление будет происходить гораздо дольше по времени за счет сравнения конфигураций и в целом будет усложнено имеющимися доработками.

  

ВАРИАНТ №3.

Использовать расширение конфигурации.

Использование расширения позволяет сохранить полную поддержку конфигурации и не увеличивать количество измененных объектов в конфигурации. Однако это чуть усложняет технологию доработки: во-первых для того, чтобы отредактировать одну строку в общем модуле "УчетНДФЛ", придется копировать всю процедуру РасчетаПоказателей, (а как вы могли заметить, если смотрели гиф-иллюстрацию выше — она огромная) и вызывать ее с помощью команды расширения "Вместо". Во вторых, нужно добавить в расширение макет Раздел2 (именно добавить свой, а не заимствовать) и в модуле отчета "Расшифровка6НДФЛ" заменить вызов типового макета на вызов созданного макета в расширении. Однако на мой взгляд, расширение все же самый выигрышный вариант, объясню почему:

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

Всем спасибо за внимание,  надеюсь, данная информация была полезна! 

6 Comments

  1. Bene_Valete

    Вопрос реализации расшифровки не давал мне покоя, и я написала в 1с по этому поводу. Описала свои наблюдения и порядок действий — они ответили, что в 6-ндфл расшифровка не нужна )

    В расшифровке 6-НДФЛ предполагается расшифровка именно по физическим лицам, расшифровки по регистраторам не предполагается.

    Если требуется провести анализ учета НДФЛ с такой степенью детализации, необходимо использовать один из следующих отчетов:

    Анализ НДФЛ по месяцам

    Сводная» справка 2-НДФЛ

    Анализ НДФЛ по датам получения доходов

    Анализ НДФЛ по документам-основаниям

    Анализ НДФЛ по месяцам налогового периода и месяцам взаиморасчетов с сотрудниками

    Подробный анализ НДФЛ по сотруднику

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

    Reply
  2. leosoft

    Спасибо, интересная информация. Странно, что Вам из «1С» не написали основного и исчерпывающего отчета в этой ситуации «Проверка раздела 2 6-НДФЛ»

    Reply
  3. leosoft

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

    Reply
  4. Bene_Valete

    (2) Рада, что мой материал оказался полезен) Тоже интересно, почему 1с не посоветовали этот отчет — он максимально подходит в данной ситуации. Возможно техподдержка и раздел разработки максимально загружены, поэтому решили как можно быстрее отписаться.

    Reply
  5. user_2010

    (4) этого отчета раньше не было. Возможно, ваша просьба поспособствовала его появлению!

    Reply
  6. Bene_Valete

    (5) На момент моего обращения он уже был)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *