====== КД, Перенос свойств объектов ======
//Перенос реквизитов объектов из 77 в свойства в 8 с помощью конфигурации "Конвертация данных"//
== ПВД ==
ВходящиеДанные = СоздатьОбъект("СписокЗначений");
// Преобразование в конкретный справочник
// Для этого случая должен быть определено правило конвертации справочника Регионы
Если ПустоеЗначение(Объект.Регион) = 0 Тогда
ВходящиеДанные.Установить("Объект", Объект);
ВходящиеДанные.Установить("Свойство", "Регион");
ВходящиеДанные.Установить("НазначениеСвойства", "Справочник_Контрагенты");
ВходящиеДанные.Установить("Значение", Объект.Регион);
ВходящиеДанные.Установить("ТипПриемника", "СправочникСсылка.Регионы");
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ЗначенияСвойствОбъектов");
КонецЕсли;
// Преобразование в общий справочник
Если ПустоеЗначение(Объект.Регион) = 0 Тогда
ВходящиеДанные.Установить("Объект", Объект);
ВходящиеДанные.Установить("Свойство", "Регион");
ВходящиеДанные.Установить("НазначениеСвойства", "Справочник_Контрагенты");
ВходящиеДанные.Установить("Значение", Строка(Объект.Регион));
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ЗначенияСвойствОбъектов");
КонецЕсли;
== ПКО «ЗначенияСвойствОбъектов» ==
ПКС «Объект», ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ОбъектИсточник = ВходящиеДанные.Получить("Объект");
НазначениеСвойства = ВходящиеДанные.Получить("НазначениеСвойства");
Если ТипЗначенияСтр(ОбъектИсточник) = "Справочник" Тогда
// В типовых правилах Бух77 > БП8 определено несколько правил для
// контрагентов и договоров
Если ОбъектИсточник.Вид() = "Контрагенты" Тогда
ИмяПКО = "Контрагенты";
ИначеЕсли ОбъектИсточник.Вид() = "Договоры" Тогда
ИмяПКО = "ДоговорыКонтрагентов";
Иначе
ИмяПКО = "";
Номер = НайтиПравило(ОбъектИсточник, ИмяПКО);
Если Номер > 0 Тогда
ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПКС "Свойство", правило "СвойстваОбъектов", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ИсходящиеДанные = ВходящиеДанные;
ПКС "Значение", правило "ЗначенияСвойствОбъектов_Значения", ПолучатьИзВходящихДанных
Событие "Перед выгрузкой"
ИсходящиеДанные = ВходящиеДанные;
Если ПустоеЗначение(ВходящиеДанные.Получить("ТипПриемника")) = 0 Тогда
ТипПриемника = ВходящиеДанные.Получить("ТипПриемника");
ИмяПКО = "";
Номер = НайтиПравило(ВходящиеДанные.Получить("Значение"), ИмяПКО);
Если Номер > 0 Тогда
ИмяПКО = мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(Номер, "Код");
КонецЕсли;
Иначе
// Для чисел, дат и строк
ТипПриемника = ТипЗначенияСтр(ВходящиеДанные.Получить("Значение"));
ИмяПКО = "";
КонецЕсли;
Конвертация произвольных значений в справочник "ЗначенияСвойствОбъектов"
== ПКО "ЗначенияСвойствОбъектов_Значения" ==
ПКС "Владелец", ПолучатьИзВходящихДанных, Поиск
Событие "Перед выгрузкой"
Значение = ВходящиеДанные.Получить("Свойство");
ИсходящиеДанные = ВходящиеДанные;
ПКС "Наименование", Поиск
Событие "Перед выгрузкой"
Значение = Строка(Источник);
== ПКО "СвойстваОбъектов" ==
ПКС "НазначениеСвойства", ПолучатьИзВходящихДанных, Поиск
ПКС "Наименование", Поиск
Событие "Перед выгрузкой"
Значение = Источник;
== ПКО "СвойстваОбъектов" ==
ПКС "НазначениеСвойства", ПолучатьИзВходящихДанных, Поиск
ПКС "Наименование", Поиск
Событие "Перед выгрузкой"
Значение = Источник;
**//__Демопример для Бух77 > УТ10.3__//**
http://acsent.nm.ru/files/others/PerenosSvoistv.zip
//P.S. Желающие более подбробно изучить КД могут почитать книгу
4601546049094 "1С:Предприятие 8. Конвертация данных: обмен данным между прикладными решениями"
Издательство 1С-Питер. 195 стр + CD с примерами и конфигурацией.//