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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

7 Comments

  1. Поручик

    «Получать из входящих свойств» лишнее, так как будущая табличная часть объекта как раз формируется из ТЗ КоллекцияОбъектов. У меня всё и без этого флажка переносится.

    Reply
  2. nick_krsk

    (1) Поручик, спасибо, буду знать

    Reply
  3. azazana

    Спасибо за статью, у меня сейчас есть похожая задача, но немного сложнее. Была бы очень благодарна за подсказку как это сделать. В 7.7 есть несколько справочников: Акции, НоменклатураАкций, ЦеныАкции, все они связаны по владельцу (ссылка на акции) в 8.2 есть один справочник «Акции» с табличными частями НоменклатураАкции и ЦеныАкции. А шапка справочника должна заполняться из справочника Акции из 7.7. То есть получается из 3 справочников нужно сделать 1. Не могли бы Вы подсказать как это сделать?

    Reply
  4. nick_krsk

    А чем сложнее? 🙂 Один в один, как в статье. Только в статье для одной табличной части сделано, а Вам для трен нужно.

    Reply
  5. azazana

    В том, что это табличная часть не у одного справочника. Это как если бы в Вашем примере в 7.7 в справочнике _ПотенцКонтрагенты были бы еще реквизиты которые необходимо было бы перенести в _ПотенциальныеКлиенты в 8.2. Я так понимаю, что необходимо создавать еще одно ПКО: _ПотенциальныеКлиенты<—>_ПотенциальныеКлиенты, но в этом случае будет создано 2 элемента, на основании справочника _ПотенциальныеКлиенты и _СпециализацииПотенц. А как дать понять системе, что элемент в 8.2 один и тот же?

    Reply
  6. nick_krsk

    У Вас в 7.7 справочник Акции это владелец справочников НоменклатураАкций и ЦеныАкции?

    А в 8.2 справочник Акции и у него подчиненные части НоменклатураАкций и ЦеныАкции? Я правильно понял?

    Reply
  7. azazana

    Я разобралась. Спасибо! )

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *