Как программно работать с документом Перенос данных в 1С:ЗКГУ и корректировать сведения для 6-НДФЛ

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

Документ Перенос данных в конфигурациях «Зарплата и кадры государственного учреждения» (ЗКГУ) и «Зарплата и управление персоналом» (ЗУП) является уникальным и в то же время сложным инструментом. Он предназначен для ручного ввода или корректировки движений по практически любым регистрам системы. Часто разработчики сталкиваются с трудностью: на форме документа отображаются таблицы с данными, но в метаданных объекта соответствующих табличных частей нет. Разберем подробно, как устроена эта механика и как правильно обращаться к данным этого документа программно.

Анализ структуры документа Перенос данных

Проанализируем ситуацию: когда мы открываем документ Перенос данных, мы видим кнопку «Настроить список регистров». После выбора нужных регистров на форме появляются закладки, которые выглядят как обычные табличные части. Однако, если мы заглянем в конфигуратор, то обнаружим, что у документа есть только одна служебная табличная часть — ТаблицаРегистров.

Выясним причину такого поведения. На самом деле то, что пользователь видит на форме под названием «Таблица расчетов» или именами конкретных регистров, — это динамически создаваемые элементы формы. Они визуализируют наборы записей регистров, для которых данный документ является регистратором. Программа не хранит эти данные в табличных частях самого документа; она считывает их напрямую из таблиц движений (регистров накопления или сведений) и отображает на форме.

Как программно обратиться к данным вложенной таблицы

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

  1. Регистрация регистра в документе: Чтобы документ «понимал», какими регистрами он управляет, необходимо добавить запись в табличную часть ТаблицаРегистров. В колонку Имя записывается полное имя регистра (например, РегистрНакопления.СведенияОДоходахНДФЛ).
  2. Чтение набора записей: Для работы с данными конкретного регистра необходимо использовать свойство Движения объекта документа.
  3. Модификация записей: Мы перебираем набор записей как обычную коллекцию, меняем нужные поля и устанавливаем признак записи.

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


// Предположим, ОбъектДокумента — это полученный объект "Перенос данных"
// 1. Указываем документу, что он работает с регистром НДФЛ
НоваяСтрокаРегистра = ОбъектДокумента.ТаблицаРегистров.Добавить();
НоваяСтрокаРегистра.Имя = "РегистрНакопления.СведенияОДоходахНДФЛ";

// 2. Обращаемся к коллекции движений
ДвиженияНДФЛ = ОбъектДокумента.Движения.СведенияОДоходахНДФЛ;

// Читаем существующие движения, если нужно их дополнить или изменить
ДвиженияНДФЛ.Прочитать();

// 3. Добавляем новую запись или правим существующие
НоваяЗапись = ДвиженияНДФЛ.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Регистратор = ОбъектДокумента.Ссылка;
// Заполняем остальные измерения и ресурсы...
НоваяЗапись.Активность = Истина;
НоваяЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("Наша Организация");

// 4. Обязательно устанавливаем флаг записи движений
ДвиженияНДФЛ.Записывать = Истина;

// 5. Записываем сам документ
ОбъектДокумента.Записать();

Особенности работы с формой документа

Если ваша задача — добавить данные так, чтобы они моментально появились на форме без предварительной записи объекта в базу, нужно работать с ДаннымиФормы. В модуле формы документа при выборе регистра динамически создаются реквизиты. Обратиться к ним можно через контекст формы, зная имя регистра. Однако этот путь сложнее и менее надежен, чем прямая работа с объектом и его движениями. Рекомендуем выполнять заполнение в фоновом задании или через обработку, которая создает/модифицирует объект и затем открывает его пользователю.

Решение проблемы смены налогового органа для 6-НДФЛ

Разберем конкретный кейс автора темы: в середине года сменился налоговый орган (ИФНС), и данные в отчете 6-НДФЛ «разрываются» или подтягиваются некорректно. Автор хотел использовать Перенос данных, чтобы массово заменить регистрацию в налоговом органе в движениях регистров НДФЛ.

Проанализируем ситуацию с точки зрения методологии учета. В 1С:ЗКГУ отчетность 6-НДФЛ формируется в разрезе связки ОКТМО + КПП + Регистрация в налоговом органе. Здесь возможны два варианта решения:

Вариант 1: Административный (самый простой)

Если при смене налоговой инспекции у вашей организации не изменились коды ОКТМО и КПП (такое часто бывает при реорганизации самих инспекций или переподчинении), то вносить изменения в движения регистров не нужно. Достаточно зайти в справочник Регистрации в налоговом органе и в карточке текущей регистрации просто исправить «Код налогового органа» и «Название». Поскольку ссылка на элемент справочника в регистрах останется прежней, программа увидит обновленный код во всех отчетах за весь год автоматически.

Вариант 2: Технический (через Перенос данных)

Если же изменился КПП или ОКТМО, вам действительно придется переносить данные на новую регистрацию. В этом случае использование документа Перенос данных оправдано. Вам необходимо скорректировать два ключевых регистра накопления:

  1. СведенияОДоходахНДФЛ — отвечает за суммы дохода и исчисленного налога.
  2. РасчетыНалогоплательщиковСБюджетомПоНДФЛ — отвечает за удержанный налог.

Пример логики для массовой замены регистрации в налоговом органе:


Для Каждого Запись Из ОбъектДокумента.Движения.СведенияОДоходахНДФЛ Цикл
    Если Запись.РегистрацияВНалоговомОргане = СтараяРегистрация Тогда
        Запись.РегистрацияВНалоговомОргане = НоваяРегистрация;
    КонецЕсли;
КонецЦикла;
ОбъектДокумента.Движения.СведенияОДоходахНДФЛ.Записывать = Истина;

Важные рекомендации при автоматизации

Работая с документом Перенос данных, помните о следующих правилах:

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

← На главную