Книга знаний

1С:Предприятие / v8 / Приемы программирования / Встроенный язык

v8: КД, перенос свойств

Перенос реквизитов объектов из 77 в свойства в 8 с помощью конфигурации "Конвертация данных"Автор статьи:
Последняя редакция №1 от 21.05.08
URL: http://kb.mista.ru/article.php?id=672

Ключевые слова: Конвертация, КД, свойства, перенос


ПВД


ВходящиеДанные = СоздатьОбъект("СписокЗначений");

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

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


//////////////
ПКО «ЗначенияСвойствОбъектов»

ПКС «Объект», ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"

ОбъектИсточник = ВходящиеДанные.Получить("Объект");
НазначениеСвойства = ВходящиеДанные.Получить("НазначениеСвойства");

Если ТипЗначенияСтр(ОбъектИсточник) = "Справочник" Тогда
   
   Если ОбъектИсточник.Вид() = "Контрагенты" Тогда
       ИмяПКО = "Контрагенты";
   ИначеЕсли ОбъектИсточник.Вид() = "Договоры" Тогда
       ИмяПКО = "ДоговорыКонтрагентов";
   Иначе
       
       ИмяПКО = "";
       Номер = НайтиПравило(ОбъектИсточник, ИмяПКО);
       
       Если Номер > 0 Тогда
           ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
       КонецЕсли;
       
   КонецЕсли;
   
КонецЕсли;

ПКС "Свойство", правило "СвойстваОбъектов", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"

ИсходящиеДанные = ВходящиеДанные;

ПКС "Значение", правило "ЗначенияСвойствОбъектов_Значения", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"

ИсходящиеДанные = ВходящиеДанные;

Если ПустоеЗначение(ВходящиеДанные.Получить("ТипПриемника")) = 0 Тогда
   
   ТипПриемника = ВходящиеДанные.Получить("ТипПриемника");
   ИмяПКО = "";
   Номер = НайтиПравило(ВходящиеДанные.Получить("Значение"), ИмяПКО);
   
   Если Номер > 0 Тогда
       ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
   КонецЕсли;
   
Иначе
   
   ТипПриемника = ТипЗначенияСтр(ВходящиеДанные.Получить("Значение"));
   ИмяПКО = "";
   
КонецЕсли;

//////////////
// Конвертация произвольных значений в справочник "ЗначенияСвойствОбъектов"
ПКО "ЗначенияСвойствОбъектов_Значения"

ПКС "Владелец", ПолучатьИзВходящихДанных, Поиск
Событие "Перед выгрузкой"

Значение = ВходящиеДанные.Получить("Свойство");
ИсходящиеДанные = ВходящиеДанные;

ПКС "Наименование", Поиск
Событие "Перед выгрузкой"

Значение = Строка(Источник);

//////////////
ПКО "СвойстваОбъектов"

ПКС "НазначениеСвойства", ПолучатьИзВходящихДанных, Поиск

ПКС "Наименование", Поиск
Событие "Перед выгрузкой"

Значение = Источник;

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика