v8: КД, перенос свойств Ключевые слова: Конвертация, КД, свойства, перенос
ПВД
ВходящиеДанные = СоздатьОбъект("СписокЗначений");
// Преобразование в конкретный справочник
// Для этого случая должен быть определено правило конвертации справочника Регионы
Если ПустоеЗначение(Объект.Регион) = 0 Тогда
ВходящиеДанные.Установить("Объект", Объект);
ВходящиеДанные.Установить("Свойство", "Регион");
ВходящиеДанные.Установить("НазначениеСвойства", "Справочник_Контрагенты");
ВходящиеДанные.Установить("Значение", Объект.Регион);
ВходящиеДанные.Установить("ТипПриемника", "СправочникСсылка.Регионы");
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ЗначенияСвойствОбъектов");
КонецЕсли;
// Преобразование в общий справочник
Если ПустоеЗначение(Объект.Регион) = 0 Тогда
ВходящиеДанные.Установить("Объект", Объект);
ВходящиеДанные.Установить("Свойство", "Регион");
ВходящиеДанные.Установить("НазначениеСвойства", "Справочник_Контрагенты");
ВходящиеДанные.Установить("Значение", Строка(Объект.Регион));
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ЗначенияСвойствОбъектов");
КонецЕсли;
//////////////
ПКО «ЗначенияСвойствОбъектов»
ПКС «Объект», ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ОбъектИсточник = ВходящиеДанные.Получить("Объект");
НазначениеСвойства = ВходящиеДанные.Получить("НазначениеСвойства");
Если ТипЗначенияСтр(ОбъектИсточник) = "Справочник" Тогда
Если ОбъектИсточник.Вид() = "Контрагенты" Тогда
ИмяПКО = "Контрагенты";
ИначеЕсли ОбъектИсточник.Вид() = "Договоры" Тогда
ИмяПКО = "ДоговорыКонтрагентов";
Иначе
ИмяПКО = "";
Номер = НайтиПравило(ОбъектИсточник, ИмяПКО);
Если Номер > 0 Тогда
ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПКС "Свойство", правило "СвойстваОбъектов", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ИсходящиеДанные = ВходящиеДанные;
ПКС "Значение", правило "ЗначенияСвойствОбъектов_Значения", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ИсходящиеДанные = ВходящиеДанные;
Если ПустоеЗначение(ВходящиеДанные.Получить("ТипПриемника")) = 0 Тогда
ТипПриемника = ВходящиеДанные.Получить("ТипПриемника");
ИмяПКО = "";
Номер = НайтиПравило(ВходящиеДанные.Получить("Значение"), ИмяПКО);
Если Номер > 0 Тогда
ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
КонецЕсли;
Иначе
ТипПриемника = ТипЗначенияСтр(ВходящиеДанные.Получить("Значение"));
ИмяПКО = "";
КонецЕсли;
//////////////
// Конвертация произвольных значений в справочник "ЗначенияСвойствОбъектов"
ПКО "ЗначенияСвойствОбъектов_Значения"
ПКС "Владелец", ПолучатьИзВходящихДанных, Поиск
Событие "Перед выгрузкой"
Значение = ВходящиеДанные.Получить("Свойство");
ИсходящиеДанные = ВходящиеДанные;
ПКС "Наименование", Поиск
Событие "Перед выгрузкой"
Значение = Строка(Источник);
//////////////
ПКО "СвойстваОбъектов"
ПКС "НазначениеСвойства", ПолучатьИзВходящихДанных, Поиск
ПКС "Наименование", Поиск
Событие "Перед выгрузкой"
Значение = Источник;
|