gifts2017

Конвертация данных. Перенос подчиненного справочника из 7.7 в табличную часть 8.x

Опубликовал NickKrsk (nick_krsk) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

Речь в статье пойдет о том, как можно создать правила обмена в конфигурации "Конвертация данных" для переноса данных из подчиненного справочника (в 7.7) в табличную часть справочника (8.х).

Речь в статье пойдет о том, как можно создать правила обмена в конфигурации "Конвертация данных" для переноса данных из подчиненного справочника (в 7.7) в табличную часть справочника (8.х).

Итак, в 7.7 есть справочник _ПотенцКонтрагенты, которому подчинен справочник _СпециализацииПотенц. У справочника _СпециализацииПотенц есть реквизит Специализация (тип спр. _Специализации).

В 8.х есть справочник _ПотенциальныеКлиенты с табличной частью Специализации. У этой табличной части один реквизит Специализация (тип спр. Специализации).

Нужно перенести данные из подчиненного справочника _СпециализацииПотенц в табличную часть справочника _ПотенциальныеКлиенты.

Первое, что нужно сделать - это сгенерировать правила конвертации объектов (ПКО) для справочников _ПотенциальныеКлиенты и _Специализации.
В правилах конвертации свойств(ПКС) для этих ПКО выставляем соответствия для реквизитов "код", "наименование" и "пометка удаления". Также отмечаем, что поиск объектов будет вестись по реквизиту "код".

Теперь переходим к описанию алгоритма получения данных из подчиненного справочника _СпециализацииПотенц и их загрузку в табличную часть справочника _ПотенциальныеКлиенты.
Для этого для справочника _ПотенцКонтрагенты вручную создаем правило конвертации группы свойст(ПКГС) "Специализации". Источник оставляем пустым. Ставим галку "Получать из входящих свойств". Это и будет табличная часть.

 

В обработчике "Перед обработкой" для этого ПКГС пишем алгорим выгрузки данных из подчиненного справочника:

СпециализацииКлиента = СоздатьОбъект("Справочник._СпециализацииПотенц");
СпециализацииКлиента.ИспользоватьВладельца(Источник);

ТЗСпециализации = СоздатьОбъект("ТаблицаЗначений");
ТЗСпециализации.НоваяКолонка("Специализация");// имена колонок должны совпадать с именами табличной части справочника, в который загружаем данные

// Источник - это элемент справочника _ПотенцКонтрагенты который выгружается из 7.7
Сообщить("Выгружается клиент: "+Источник);
СпециализацииКлиента.ВыбратьЭлементы();
Пока СпециализацииКлиента.ПолучитьЭлемент() = 1 Цикл
ТЗСпециализации.НоваяСтрока();
ТЗСпециализации.Специализация = СпециализацииКлиента.Специализация;
Сообщить("Специализация:"+СпециализацииКлиента.Специализация.Наименование);
КонецЦикла;

//Параметр КоллекцияОбъектов - предназначен для программного определения состава выгружаемой коллекции.
КоллекцияОбъектов = ТЗСпециализации;

Далее, в ПКГС "Специализации" нужно создать ПКС "Специализация"(оно соответствует реквизиту табличной части "Специализация"). Причем, источник нужно оставить пустым, а реквизите "Правило" выбрать правило "Специализации"(чтобы система понимала, по какому правилу конвертировать объекты из параметра КоллекцияОбъектов).

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 04.12.13 15:14
"Получать из входящих свойств" лишнее, так как будущая табличная часть объекта как раз формируется из ТЗ КоллекцияОбъектов. У меня всё и без этого флажка переносится.
2. NickKrsk (nick_krsk) 05.12.13 13:37
(1) Поручик, спасибо, буду знать
3. Анна Борзенкова (azazana) 13.01.14 15:56
Спасибо за статью, у меня сейчас есть похожая задача, но немного сложнее. Была бы очень благодарна за подсказку как это сделать. В 7.7 есть несколько справочников: Акции, НоменклатураАкций, ЦеныАкции, все они связаны по владельцу (ссылка на акции) в 8.2 есть один справочник "Акции" с табличными частями НоменклатураАкции и ЦеныАкции. А шапка справочника должна заполняться из справочника Акции из 7.7. То есть получается из 3 справочников нужно сделать 1. Не могли бы Вы подсказать как это сделать?
4. NickKrsk (nick_krsk) 13.01.14 16:09
А чем сложнее? :) Один в один, как в статье. Только в статье для одной табличной части сделано, а Вам для трен нужно.
5. Анна Борзенкова (azazana) 13.01.14 16:33
В том, что это табличная часть не у одного справочника. Это как если бы в Вашем примере в 7.7 в справочнике _ПотенцКонтрагенты были бы еще реквизиты которые необходимо было бы перенести в _ПотенциальныеКлиенты в 8.2. Я так понимаю, что необходимо создавать еще одно ПКО: _ПотенциальныеКлиенты<--->_ПотенциальныеКлиенты, но в этом случае будет создано 2 элемента, на основании справочника _ПотенциальныеКлиенты и _СпециализацииПотенц. А как дать понять системе, что элемент в 8.2 один и тот же?
6. NickKrsk (nick_krsk) 13.01.14 18:29
У Вас в 7.7 справочник Акции это владелец справочников НоменклатураАкций и ЦеныАкции?
А в 8.2 справочник Акции и у него подчиненные части НоменклатураАкций и ЦеныАкции? Я правильно понял?
7. Анна Борзенкова (azazana) 13.01.14 18:34
Я разобралась. Спасибо! )
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа