Как правильно программно заполнить данные в документе «Перенос данных» в 1С:ЗУП (ЗКГУ)?

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

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

Почему табличная часть документа не содержит данных?

Важно уяснить, что Перенос данных — это не классический документ с табличными частями для хранения учетных данных. Его табличная часть ТаблицаРегистров является лишь реестром, своего рода «списком прав доступа». Когда мы добавляем в нее запись с именем регистра, мы лишь говорим системе: «Данный документ является регистратором для этого регистра». Сами же данные хранятся непосредственно в таблицах самого регистра.

Следовательно, обращение к «вложенной табличной части» в самом объекте ДокументОбъект.ПереносДанных невозможно, так как ее не существует в структуре метаданных. Вместо этого мы должны работать с объектом НаборЗаписей соответствующего регистра.

Пошаговый алгоритм добавления данных в регистр

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

  1. Получение ссылки на документ-регистратор: Сначала нам необходимо найти тот документ, от имени которого мы будем вносить корректировки.
  2. Создание набора записей: Мы используем метод СоздатьНаборЗаписей() у нужного регистра накопления или сведений.
  3. Установка отбора: Это самый важный шаг. Мы обязаны установить отбор по полю Регистратор, чтобы 1С понимала, какие именно записи в регистре принадлежат нашему документу.

Пример программного кода для внесения записей

Представим, что нам нужно добавить данные в регистр СведенияОДоходахСтраховыеВзносы. Выполним это следующим образом:


// Сначала найдем документ по номеру (или по другой ссылке)
Регистратор = Документы.ПереносДанных.НайтиПоНомеру("0000001");

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

// Устанавливаем отбор по нашему документу
НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);

// Прочитываем существующие записи, чтобы не затереть их, если они есть
НаборЗаписей.Прочитать();

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

// Записываем набор в базу данных
НаборЗаписей.Записать();

Важные нюансы работы

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

Анализируя данную задачу, мы рекомендуем всегда проверять, не предусмотрен ли для вашей цели (например, смены регистрационного налогового органа) типовой документ системы. В ЗКГУ смена параметров учета часто требует корректного закрытия периодов, и простое внесение записей через ПереносДанных может привести к расхождениям в отчетности, если не учесть влияние на другие регистры накопления.

← На главную