Перенос своего объектного реквизита КД 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 12 14.06.19 20:04 Сейчас в теме
Как вариант - в базе источнике в ПКО документа в обработчике "При отправке":
Если ЗначениеЗаполнено(ДанныеИБ._ВашРеквизит_) Тогда
	СтруктураДопИнф = Новый Структура;
	СтруктураДопИнф.Вставить("_ВашРеквизит_", XMLСтрока(ДанныеИБ._ВашРеквизит_));
	СтруктураДопИнф.Вставить("_ПоляПоиска1_", XMLСтрока(ДанныеИБ._ВашРеквизит_._ПоляПоиска1_)); 
	СтруктураДопИнф.Вставить("_ПоляПоиска2_", XMLСтрока(ДанныеИБ._ВашРеквизит_._ПоляПоиска2_));
	
	ДанныеXDTO.Вставить("AdditionalInfo", СтруктураДопИнф);
КонецЕсли;

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

Минус решения в том, что поиск нужно описывать вручную.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)