====== КД: перенос подчиненного справочника в другой подчиненный справочник ======
* Исходная среда:
* Источник: ТиС ред. 8.7
* Приемник: Бухгалтерия, ред. 4.5
* Задача: перенести подчиненный справочник "Расчетные счета" по контрагентам из источника в одноименный справочник в Приемнике, справочник назначения тоже подчиненный. Прописать реквизит "ОсновнойСчет" в Приемнике первым попавшимся счетом, т.к. в источнике нет подобного реквизита.
* Условия: установленная 1С:Конвертация данных, ред. 2 (КД) (в рассматриваемом примере 2.1.5.1 для 1С: 8.2). В КД загружено описание конфигураций Источника и Приемника, начато конфигурирование Правил Конвертации Объектов (ПКО).
===== Решение =====
Для решения задачи мы будем использовать функцию [[http://wiki.itcall.ru/doku.php?id=doc:1c:spravochnye_svedenija_po_kd:vygruzit_po_pravilu|ВыгрузитьПоПравилу()]], которой будем передавать всего два параметра: Источник и имя ПКО. Создадим ПКО РасчетныеСчета, настроим соответствие реквизитов Источника и Приемника. Именно этому ПКО мы через функцию ВыгрузитьПоПравилу() будем передавать данные по подчиненным справочникам РасчетныеСчета от Источинка к Приемнику.
==== ПКО РасчетныеСчета ====
Благодаря тому, что почти все реквизиты Источника и Приемника совпадают по названию и смыслу, мы просто создаем новое ПКО и проставляем соответствие реквизитов, отмечаем флажки Поиск у соответствующих полей:
{{ :doc:1c:konvertacija_dannyx_2:04-02-2012_2-57-08_.jpg |}}
==== ПКО Контрагенты ====
Следующим этапом стоит задача отладить ПКО Контрагенты. Что мы будем делать:
* заходим в свойства ПКО Контрагенты и вставляем в процедуру "После выгрузки" код:
СпрРасчетныеСчета = СоздатьОбъект("Справочник.РасчетныеСчета");
СпрРасчетныеСчета.ИспользоватьВладельца(Источник.ТекущийЭлемент());
СпрРасчетныеСчета.ВыбратьЭлементы();
Пока СпрРасчетныеСчета.ПолучитьЭлемент() = 1 Цикл
ВыгрузитьПоПравилу(СпрРасчетныеСчета.ТекущийЭлемент(),
,
,
,
"РасчетныеСчета",
,
,
);
КонецЦикла;
Обращаем внимание, что мы передаем два параметра функции ВыгрузитьПоПравилу: Источник - очередной расчетный счет при выборке и ИмяПКО - имя ранее созданного ПКО РасчетныеСчета. Процедура [[http://www.wiki.itcall.ru/doku.php/doc/1c/spravochnye_svedenija_po_kd/posle_vygruzki|После выгрузки]] описана в [[http://www.wiki.itcall.ru/doku.php/doc/1c/spravochnye_svedenija_po_kd/spravochnye_svedenija_po_kd|справочнике]].
{{ :doc:1c:konvertacija_dannyx_2:04-02-2012_3-35-42_.jpg |}}
Следующий этап состоит в том, чтобы загрузить в реквизит ОсновнойСчет один из загруженных ранее расчетных счетов. Делается это опять же в ПКО Контрагенты, но только теперь уже в процедуре [[http://www.wiki.itcall.ru/doku.php/doc/1c/spravochnye_svedenija_po_kd/posle_zagruzki|После загрузки]]:
СпрРасчетныеСчета = СоздатьОбъект("Справочник.РасчетныеСчета");
СпрРасчетныеСчета.ИспользоватьВладельца(Объект.ТекущийЭлемент());
СпрРасчетныеСчета.ВыбратьЭлементы();
Пока СпрРасчетныеСчета.ПолучитьЭлемент() = 1 Цикл
// поскольку в источнике нет понятия основной счет, возьмем первый попавшийся и "впихем" его
// в реквизит ОсновнойСчет
Объект.ОсновнойСчет = СпрРасчетныеСчета.ТекущийЭлемент();
Прервать;
КонецЦикла;
{{ :doc:1c:konvertacija_dannyx_2:04-02-2012_3-52-30.jpg |}}
==== Итоги ====
Итак, что сделано на данном этапе:
* перенесен подчиненный справочник "Расчетные счета" из Источника в Приемник
* установлен реквизит ОсновнойСчет в приемнике одним из РасчетныхСчетов.
Претензии и возражения по статье принимаются, т.к. автор осваивает громадные возможности КД и описал задачу, как он решал сам. Решение полностью работоспособное.
{{tag>1C Конвертация_данных}}
~~DISCUSSION~~