Для отчета 6-НДФЛ за 2025 год срок сдачи наступит 01.04.2025. Но начинать работу над ним стоит конечно раньше чем 31.03.2025 🙂 Предлагаю сделать немного удобнее работу с этим отчетом вашим расчетчикам, особенно если у них 100500 обособленных подразделений, миллион сотрудников и сдача отчетности становится настоящим испытанием для нервной системы.
Внимание! Публикация состоит из двух частей: расследование случая и методики доработки.
Если вас интересует только конечный результат, то рекомендую перейти сразу к методике доработки. А в первой части описано небольшое путешествие по системе регламентированного отчета 6-НДФЛ, в ходе которого обнаружился по моему предположению "недоделанный" функционал и на копии базы данных последовательно этот функционал доведен до конца. Возможно я не первый человек, кто это заметил, но похожих публикаций здесь мной не найдено.
При изучении устройства модулей и при отладке регламентированного отчета 6-НДФЛ я наткнулась на странную вещь в расшифровке второго раздела: в наборе данных макета СКД присутствует поле "Регистратор", но при этом расшифровка формируется только в разрезе физического лица:
Оказалось, что прежде всего у отчета "Расшифровка6НДФЛ" в схеме компоновки данных макета "Раздел2" данное поле не указано в настройках:
А зачем тогда оно в наборе?
Указываем:
но расшифровка по прежнему не заполняется регистраторами. Далее при помощи отладки выясняем, что в источнике данных таблице значений колонка регистратор не содержит значений:
Из модуля отчета "Расшифровка6НДФЛ" переходим в общие модули к функционалу заполнения источника данных из строки:
ИсточникРасшифровки.РасчетПоказателей6НДФЛ(Параметры.ИмяРасчета, ДатаНачалаНП, ДатаКонцаНП, ?(Параметры.ДатаПодписи > ДатаКонцаНП,Параметры.ДатаПодписи, ДатаКонцаНП), Организация, РегистрацияВНалоговомОргане, ВнешниеНаборыДанных, Истина);
(На деле "ИсточникРасшифровки" это ОбщийМодуль УчетНДФЛ )
Доходим до итоговой процедуры "РасчетПоказателей_6НДФЛ_2025Кв1(НачалоПериода, ОкончаниеПериода, ДатаПодписи, Организация, РегистрацияВНалоговомОргане, ОписаниеТаблиц, ПодробныеДанные)". Кстати, если у вас стоит задача найти ошибку в формировании 6-НДФЛ, рекомендую искать ее в этой процедуре, т.к. практически в ней находится весь функционал. Я пишу это и поглядываю, не выпустили ли вдруг ЗУП 3.1.10 в котором вообще все по-другому.
В ходе отладки мы понимаем, что во всех запросах присутствует поле Регистратор. Более того, он корректно заполнен в результирующей таблице значений, но в какой-то момент значения колонки очищаются.
Продолжаем отладку и в итоге выясняется, что строка номер 12245 (в другом релизе или при наличии доработок номер строки может не совпадать)
ВременнаяТаблица.Свернуть("ДатаФактическогоПолученияДохода,П000020010001,ДатаУдержанияНалога,П000020011001,СрокПеречисленияНалога,П000020012001" + ?(ПодробныеДанные, ",ФизическоеЛицо", ""),"П000020014001,П000020013001");
является причиной отсутствия данных о регистраторах в итоговой таблице. Выдержка из синтакс-помошника:
ТаблицаЗначений (ValueTable)
Свернуть (GroupBy)
Синтаксис:
Свернуть(<КолонкиГруппировок>, <КолонкиСуммирования>)
Параметры:
<КолонкиГруппировок> (обязательный)
Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.
<КолонкиСуммирования> (необязательный)
Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.
Описание:
Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.
"Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений" — таким образом, значения колонки Регистратор были очищены, т.к. ее не указали в качестве колонки группировки. Также обращаем внимание на то, что колонка "ФизическоеЛицо" является колонкой группировки в зависимости от условия "ПодробныеДанные":
?(ПодробныеДанные, ",ФизическоеЛицо", "")
Для чего нужно это условие? Дело в том, что для получения данных для заполнения отчета и получения данных для вывода расшифровки отвечает одна и та же процедура — "РасчетПоказателей_6НДФЛ_2025Кв1". А булево "ПодробныеДанные " определяет, происходит заполнение самого Раздела 2 отчета 6-НДФЛ (ПодробныеДанные = ложь) или происходит получение данных для вывода его расшифровки (ПодробныеДанные = истина). Таким образом, мы можем воспользоваться этим условием дополнив его для получения нужного нам результата — выводить данные для расшифровки в разрезе регистраторов и получать сводные данные для заполнения Раздела 2:
?(ПодробныеДанные, ",ФизическоеЛицо, Регистратор", "")
Тогда строка группировки таблицы будет выглядеть следующим образом:
ВременнаяТаблица.Свернуть("ДатаФактическогоПолученияДохода,П000020010001,ДатаУдержанияНалога,П000020011001,СрокПеречисленияНалога,П000020012001" + ?(ПодробныеДанные, ",ФизическоеЛицо, Регистратор", ""),"П000020014001,П000020013001");
Готово!
Теперь расшифровка выводится в нужном виде, при этом функционал заполнения Раздела 2 не был изменен:
В итоге для реализации достаточно удобной функциональности не хватает одной строчки и одного поля, предположительно этот функционал был не доделан и оставлен в таком виде.
Методика доработки конфигурации:
ВАРИАНТ №1.
Ничего не делать, оставить конфигурацию и отладчик в покое работает не трогай и пользоваться типовым механизмом;
ВАРИАНТ №2.
Если в конфигурации включено разрешение изменений и/или вас не смущает предложение снять с поддержки 2 объекта конфигурации:
Включаем возможность изменения для макета "Раздел2" отчета "Расшифровка6НДФЛ" . В настройках схемы компоновки данных в поля группировок добавляем к Физическому лицу поле "Регистратор":
Включаем возможность изменения для общего модуля "УчетНДФЛ". Находим процедуру "РасчетПоказателей_6НДФЛ_2025Кв1". Изменяем условие, как показано на рисунке:
Готово!
Подробная последовательность действий в случае, если конфигурация находится на полной поддержке:
Внимание! Если конфигурация находится на полной поддержке, т.е. обновления проходят на типовой конфигурации в полностью автоматическом режиме — подумайте, возможно стоит рассмотреть следующий вариант № 3 — расширение конфигурации, при котором конфигурация остается на полной поддержке. Если же вы включаете изменение для конфигурации как в этом варианте, то обновление будет происходить гораздо дольше по времени за счет сравнения конфигураций и в целом будет усложнено имеющимися доработками.
ВАРИАНТ №3.
Использовать расширение конфигурации.
Использование расширения позволяет сохранить полную поддержку конфигурации и не увеличивать количество измененных объектов в конфигурации. Однако это чуть усложняет технологию доработки: во-первых для того, чтобы отредактировать одну строку в общем модуле "УчетНДФЛ", придется копировать всю процедуру РасчетаПоказателей, (а как вы могли заметить, если смотрели гиф-иллюстрацию выше — она огромная) и вызывать ее с помощью команды расширения "Вместо". Во вторых, нужно добавить в расширение макет Раздел2 (именно добавить свой, а не заимствовать) и в модуле отчета "Расшифровка6НДФЛ" заменить вызов типового макета на вызов созданного макета в расширении. Однако на мой взгляд, расширение все же самый выигрышный вариант, объясню почему:
Во-первых, это отсутствие необходимости снимать конфигурацию с поддержки, возможность обновлять ее как полностью типовую. Во-вторых его в любой момент можно отключить и вернуться к типовому коду. В третьих, расширение удобнее для анализа имеющихся доработок — оно оперативно и наглядно показывает, чтобы было изменено.
Всем спасибо за внимание, надеюсь, данная информация была полезна!
Вопрос реализации расшифровки не давал мне покоя, и я написала в 1с по этому поводу. Описала свои наблюдения и порядок действий — они ответили, что в 6-ндфл расшифровка не нужна )
Если требуется провести анализ учета НДФЛ с такой степенью детализации, необходимо использовать один из следующих отчетов:
Анализ НДФЛ по месяцам
Сводная» справка 2-НДФЛ
Анализ НДФЛ по датам получения доходов
Анализ НДФЛ по документам-основаниям
Анализ НДФЛ по месяцам налогового периода и месяцам взаиморасчетов с сотрудниками
Подробный анализ НДФЛ по сотруднику
Сворачивать окно и заходить в другой отчет чтобы посмотреть детализацию по регистратору, это может и не так страшно, но что-то я не понимаю, почему если для этого почти все есть, не посмотреть прямо в расшифровке. И главное зачем составлять все запросы так, чтобы в итоговой таблице был регистратор, а на последнем шаге его убирать?
Спасибо, интересная информация. Странно, что Вам из «1С» не написали основного и исчерпывающего отчета в этой ситуации «Проверка раздела 2 6-НДФЛ»
В качестве пожелания — нельзя ли сделать нормальную расшифровку в 1 разделе по коду 020 — сумма начисленного дохода, чтобы было видно — из какого расчетного периода пришла сумма, далее расшифровку по видам расчета, а потом — по сотрудникам и регистраторам. В принципе интересует не обязательно расшифровка — можно отдельным отчетом.
(2) Рада, что мой материал оказался полезен) Тоже интересно, почему 1с не посоветовали этот отчет — он максимально подходит в данной ситуации. Возможно техподдержка и раздел разработки максимально загружены, поэтому решили как можно быстрее отписаться.
(4) этого отчета раньше не было. Возможно, ваша просьба поспособствовала его появлению!
(5) На момент моего обращения он уже был)