Инструменты пользователя

Инструменты сайта


Боковая панель

doc:1c:konvertacija_dannyx_2:perenos_podchinennogo_spravochnika_v_drugoj_podchinennyj_spravochnik

КД: перенос подчиненного справочника в другой подчиненный справочник

  • Исходная среда:
    • Источник: ТиС ред. 8.7
    • Приемник: Бухгалтерия, ред. 4.5
  • Задача: перенести подчиненный справочник «Расчетные счета» по контрагентам из источника в одноименный справочник в Приемнике, справочник назначения тоже подчиненный. Прописать реквизит «ОсновнойСчет» в Приемнике первым попавшимся счетом, т.к. в источнике нет подобного реквизита.
  • Условия: установленная 1С:Конвертация данных, ред. 2 (КД) (в рассматриваемом примере 2.1.5.1 для 1С: 8.2). В КД загружено описание конфигураций Источника и Приемника, начато конфигурирование Правил Конвертации Объектов (ПКО).

Решение

Для решения задачи мы будем использовать функцию ВыгрузитьПоПравилу(), которой будем передавать всего два параметра: Источник и имя ПКО. Создадим ПКО РасчетныеСчета, настроим соответствие реквизитов Источника и Приемника. Именно этому ПКО мы через функцию ВыгрузитьПоПравилу() будем передавать данные по подчиненным справочникам РасчетныеСчета от Источинка к Приемнику.

ПКО РасчетныеСчета

Благодаря тому, что почти все реквизиты Источника и Приемника совпадают по названию и смыслу, мы просто создаем новое ПКО и проставляем соответствие реквизитов, отмечаем флажки Поиск у соответствующих полей:

ПКО Контрагенты

Следующим этапом стоит задача отладить ПКО Контрагенты. Что мы будем делать:

  • заходим в свойства ПКО Контрагенты и вставляем в процедуру «После выгрузки» код:
СпрРасчетныеСчета = СоздатьОбъект("Справочник.РасчетныеСчета");
СпрРасчетныеСчета.ИспользоватьВладельца(Источник.ТекущийЭлемент());
СпрРасчетныеСчета.ВыбратьЭлементы();

Пока СпрРасчетныеСчета.ПолучитьЭлемент() = 1 Цикл
	
	ВыгрузитьПоПравилу(СпрРасчетныеСчета.ТекущийЭлемент(),
						,
						,
						,
						"РасчетныеСчета",
						,
						,
						);
КонецЦикла;

Обращаем внимание, что мы передаем два параметра функции ВыгрузитьПоПравилу: Источник - очередной расчетный счет при выборке и ИмяПКО - имя ранее созданного ПКО РасчетныеСчета. Процедура После выгрузки описана в справочнике.

Следующий этап состоит в том, чтобы загрузить в реквизит ОсновнойСчет один из загруженных ранее расчетных счетов. Делается это опять же в ПКО Контрагенты, но только теперь уже в процедуре После загрузки:

СпрРасчетныеСчета = СоздатьОбъект("Справочник.РасчетныеСчета");
СпрРасчетныеСчета.ИспользоватьВладельца(Объект.ТекущийЭлемент());
СпрРасчетныеСчета.ВыбратьЭлементы();

Пока СпрРасчетныеСчета.ПолучитьЭлемент() = 1 Цикл
	// поскольку в источнике нет понятия основной счет, возьмем первый попавшийся и "впихем" его 
	// в реквизит ОсновнойСчет
	
	Объект.ОсновнойСчет = СпрРасчетныеСчета.ТекущийЭлемент();
	
	Прервать;
	
КонецЦикла;

Итоги

Итак, что сделано на данном этапе:

  • перенесен подчиненный справочник «Расчетные счета» из Источника в Приемник
  • установлен реквизит ОсновнойСчет в приемнике одним из РасчетныхСчетов.

Претензии и возражения по статье принимаются, т.к. автор осваивает громадные возможности КД и описал задачу, как он решал сам. Решение полностью работоспособное.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ____  _____ ______   __    __ __
  / __/ / ___//_  __/  / /   / // /
 / _/  / (_ /  / /    / /__ / _  / 
/_/    \___/  /_/    /____//_//_/
 
/var/www/wiki.itcall.ru/data/pages/doc/1c/konvertacija_dannyx_2/perenos_podchinennogo_spravochnika_v_drugoj_podchinennyj_spravochnik.txt · Последние изменения: d.m.Y H:i — dbehterev