Речь в статье пойдет о том, как можно создать правила обмена в конфигурации "Конвертация данных" для переноса данных из подчиненного справочника (в 7.7) в табличную часть справочника (8.х).
Итак, в 7.7 есть справочник _ПотенцКонтрагенты, которому подчинен справочник _СпециализацииПотенц. У справочника _СпециализацииПотенц есть реквизит Специализация (тип спр. _Специализации).
В 8.х есть справочник _ПотенциальныеКлиенты с табличной частью Специализации. У этой табличной части один реквизит Специализация (тип спр. Специализации).
Нужно перенести данные из подчиненного справочника _СпециализацииПотенц в табличную часть справочника _ПотенциальныеКлиенты.
Первое, что нужно сделать - это сгенерировать правила конвертации объектов (ПКО) для справочников _ПотенциальныеКлиенты и _Специализации.
В правилах конвертации свойств(ПКС) для этих ПКО выставляем соответствия для реквизитов "код", "наименование" и "пометка удаления". Также отмечаем, что поиск объектов будет вестись по реквизиту "код".
Теперь переходим к описанию алгоритма получения данных из подчиненного справочника _СпециализацииПотенц и их загрузку в табличную часть справочника _ПотенциальныеКлиенты.
Для этого для справочника _ПотенцКонтрагенты вручную создаем правило конвертации группы свойств(ПКГС) "Специализации". Источник оставляем пустым. Ставим галку "Получать из входящих свойств". Это и будет табличная часть.
В обработчике "Перед обработкой" для этого ПКГС пишем алгоритм выгрузки данных из подчиненного справочника:
СпециализацииКлиента = СоздатьОбъект("Справочник._СпециализацииПотенц");
СпециализацииКлиента.ИспользоватьВладельца(Источник);
ТЗСпециализации = СоздатьОбъект("ТаблицаЗначений");
ТЗСпециализации.НоваяКолонка("Специализация");// имена колонок должны совпадать с именами табличной части справочника, в который загружаем данные
// Источник - это элемент справочника _ПотенцКонтрагенты который выгружается из 7.7
Сообщить("Выгружается клиент: "+Источник);
СпециализацииКлиента.ВыбратьЭлементы();
Пока СпециализацииКлиента.ПолучитьЭлемент() = 1 Цикл
ТЗСпециализации.НоваяСтрока();
ТЗСпециализации.Специализация = СпециализацииКлиента.Специализация;
Сообщить("Специализация:"+СпециализацииКлиента.Специализация.Наименование);
КонецЦикла;
//Параметр КоллекцияОбъектов - предназначен для программного определения состава выгружаемой коллекции.
КоллекцияОбъектов = ТЗСпециализации;
Далее, в ПКГС "Специализации" нужно создать ПКС "Специализация"(оно соответствует реквизиту табличной части "Специализация"). Причем, источник нужно оставить пустым, а реквизите "Правило" выбрать правило "Специализации"(чтобы система понимала, по какому правилу конвертировать объекты из параметра КоллекцияОбъектов).