8 (926) 177-35-78

Функция "ВыгрузитьРегистр()" в конвертации данных

31.03.2018

Если необходимо конвертировать значения справочника в значения регистра или выгрузить сопутствующую информацию (например, для справочника Физические лица перенести паспортные данные физлиц и их ФИО с историей).


 

Примеры кода:

// Выгрузка присоединенных файлов физлиц
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ФизическиеЛицаПрисоединенныеФайлы.Ссылка
|ИЗ
| Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы
|ГДЕ
| ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И ФизическиеЛицаПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла"
);
Запрос.УстановитьПараметр("ВладелецФайла", Источник.Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка,,,,"ХранилищеДополнительнойИнформации");
КонецЦикла;

// Выгрузка паспортных данных
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДокументыФизическихЛиц.Период,
| ДокументыФизическихЛиц.Физлицо,
| ДокументыФизическихЛиц.ВидДокумента,
| ДокументыФизическихЛиц.Серия,
| ДокументыФизическихЛиц.Номер,
| ДокументыФизическихЛиц.ДатаВыдачи,
| ДокументыФизическихЛиц.СрокДействия,
| ДокументыФизическихЛиц.КемВыдан,
| ДокументыФизическихЛиц.КодПодразделения,
| ДокументыФизическихЛиц.ЯвляетсяДокументомУдостоверяющимЛичность,
| ДокументыФизическихЛиц.Представление
|ИЗ
| РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
|ГДЕ
| ДокументыФизическихЛиц.Физлицо = &Физлицо"
);
Запрос.УстановитьПараметр("ФизЛицо", Источник.Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
// ВыгрузитьПоПравилу(Выборка,,,,"ПаспортныеДанныеФизЛиц");

Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить("Имя");
Отбор.Колонки.Добавить("Значение");
Отбор.Колонки.Добавить("Использование");

СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "ФизЛицо";
СтрокаОтбора.Значение = Выборка.ФизическоеЛицо;
СтрокаОтбора.Использование = Истина;

СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "ВидДокумента";
СтрокаОтбора.Значение = Выборка.ВидДокумента;
СтрокаОтбора.Использование = Истина;

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Период");
Строки.Колонки.Добавить("Физлицо");
Строки.Колонки.Добавить("ВидДокумента");
Строки.Колонки.Добавить("Серия");
Строки.Колонки.Добавить("Номер");
Строки.Колонки.Добавить("ДатаВыдачи");
Строки.Колонки.Добавить("СрокДействия");
Строки.Колонки.Добавить("КемВыдан");
Строки.Колонки.Добавить("КодПодразделения");
Строки.Колонки.Добавить("ЯвляетсяДокументомУдостоверяющимЛичность");
Строки.Колонки.Добавить("Представление");

Строка = Строки.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Выборка);

НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор = Отбор;
НаборЗаписей.Строки = Строки;

ВыгрузитьРегистр(НаборЗаписей, , , , "ПаспортныеДанныеФизЛиц");
КонецЦикла;

// Выгрузка ФИО физических лиц
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ФИОФизЛиц.Период,
| ФИОФизЛиц.ФизическоеЛицо,
| ФИОФизЛиц.Фамилия,
| ФИОФизЛиц.Имя,
| ФИОФизЛиц.Отчество
|ИЗ
| РегистрСведений.ФИОФизическихЛиц КАК ФИОФизЛиц
|ГДЕ
| ФИОФизЛиц.ФизическоеЛицо = &ФизЛицо"
);
Запрос.УстановитьПараметр("ФизЛицо", Источник.Ссылка);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
// ВыгрузитьПоПравилу(Выборка,,,,"ФИОФизЛиц");

Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить("Имя");
Отбор.Колонки.Добавить("Значение");
Отбор.Колонки.Добавить("Использование");

СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "ФизическоеЛицо";
СтрокаОтбора.Значение = Выборка.ФизическоеЛицо;
СтрокаОтбора.Использование = Истина;

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("ФизическоеЛицо");
Строки.Колонки.Добавить("Имя");
Строки.Колонки.Добавить("Отчество");
Строки.Колонки.Добавить("Фамилия");
Строки.Колонки.Добавить("Период");

Строка = Строки.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Выборка);

НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор = Отбор;
НаборЗаписей.Строки = Строки;

ВыгрузитьРегистр(НаборЗаписей, , , , "ФИОФизЛиц");

КонецЦикла;

 

А также можете посмотреть пример конвертации данных из справочника в регистр:

Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить("Имя");
Отбор.Колонки.Добавить("Значение");
Отбор.Колонки.Добавить("Использование");

СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "СтруктурнаяЕдиница";
СтрокаОтбора.Значение = Объект.Владелец;
СтрокаОтбора.Использование = Истина;

СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "ОтветственноеЛицо";
СтрокаОтбора.Значение = Объект.ОтветственноеЛицо;
СтрокаОтбора.Использование = Истина;

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Активность");
Строки.Колонки.Добавить("Ссылка");
Строки.Колонки.Добавить("Период");
Строки.Колонки.Добавить("СтруктурнаяЕдиница");
Строки.Колонки.Добавить("ОтветственноеЛицо");
Строки.Колонки.Добавить("Должность");
Строки.Колонки.Добавить("ФизическоеЛицо");

Строка = Строки.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Объект);

Строка.Период = Объект.ДатаНачала;
Строка.СтруктурнаяЕдиница = Объект.Владелец;
Строка.Активность = Истина;

НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор = Отбор;
НаборЗаписей.Строки = Строки;

ВыгрузитьРегистр(НаборЗаписей, , , , "ОтветственныеЛицаОрганизаций");

 

В последнем примере в конфигурации-источнике данные - это справочник. А в приемнике - регистр сведений. Правила - из ПВД, "Перед выгрузкой".

 

А в первом примере указаны правила из ПКО, "После конвертации". Это сделано для того, чтобы для  тех физлиц, которые только что выгружены, была перенесена доп. информация.


Назад к списку новостей