Перенос своего объектного реквизита КД 3.0 (ERP2 ->БП3)

1. binC 11.06.19 12:58 Сейчас в теме
Здравствуйте!
Имеется односторонний обмен БП3.0 -> ERP2.4
В БП и в ERP создан дополнительный справочник.
А так же в некоторые типовые документы добавлен реквизит - ссылка на этот справочник(в обоих базах).

Справочник включил в обмен, найдя в формате EnterpriseData наиболее похожий объект и дописав условие в ПОД по выбору ПКО. С ним все ок, он переносится. Важно: идентификация происходит сначала по полям поиска потом по УИД.

Не понятно как изменить правила обмена документов так чтобы ссылка на справочник переносилась тоже.
Как я понял через AdditionalInfo не подходит, т.к. идентификация справочника происходит не только по УИДу.
В обучающих роликах Гилева видел про перенос через ДополнительныеРеквизиты, с помощью т.н. "инструкции", но я не понял как при этом не сломать типовой перенос дополнительных реквизитов...
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. binC 11.06.19 15:43 Сейчас в теме
Может есть у кого пример как добавить в обмен свой объект (с идентификацией по полям поиска) ?
3. Oldsad 13.06.19 07:41 Сейчас в теме
Важно: идентификация происходит сначала по полям поиска потом по УИД

странное решение, обычно делается все наоборот, с начала по уид, затем по полям поиска
4. binC 13.06.19 11:46 Сейчас в теме
(3) да именно так, просто оговорился
5. Oldsad 14.06.19 02:38 Сейчас в теме
тогда не совсем ясно в чем у автора проблема
все нужные настройки делаются в конвертации путем нажатия пары галочек
6. Kesak 14 14.06.19 20:04 Сейчас в теме
Как вариант - в базе источнике в ПКО документа в обработчике "При отправке":
Если ЗначениеЗаполнено(ДанныеИБ._ВашРеквизит_) Тогда
	СтруктураДопИнф = Новый Структура;
	СтруктураДопИнф.Вставить("_ВашРеквизит_", XMLСтрока(ДанныеИБ._ВашРеквизит_));
	СтруктураДопИнф.Вставить("_ПоляПоиска1_", XMLСтрока(ДанныеИБ._ВашРеквизит_._ПоляПоиска1_)); 
	СтруктураДопИнф.Вставить("_ПоляПоиска2_", XMLСтрока(ДанныеИБ._ВашРеквизит_._ПоляПоиска2_));
	
	ДанныеXDTO.Вставить("AdditionalInfo", СтруктураДопИнф);
КонецЕсли;

в базе приемнике, в ПКО документа в обработчике "При конвертации данных XDTO"
Если ДанныеXDTO.Свойство("AdditionalInfo") Тогда
		_СтрокаСсылкиВашРеквизит_ = "";
	
	Если ДанныеXDTO.AdditionalInfo.Свойство("_ВашРеквизит_", _СтрокаСсылкиВашРеквизит_) Тогда
		//Проверка на заполненность _СтрокаСсылкиВашРеквизит_
		//Ищем по ссылку по строке _СтрокаСсылкиВашРеквизит_, если находим то ПолученныеДанные._ВашРеквизит_ = найденная ссылка, иначе:
		//Если не находим ищем по полям ДанныеXDTO.AdditionalInfo._ПоляПоиска*_
		//Если находим по полям поиска ПолученныеДанные._ВашРеквизит_ = найденная ссылка
	КонецЕсли;	
КонецЕсли;
Показать

Минус решения в том, что поиск нужно описывать вручную.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот