КД УстановитьСсылкуНового где происходит ? подскажите

1. Vitaly1C8 15.10.20 14:00 Сейчас в теме
Всем привет ! Пытаюсь разобраться с обменом, столкнулся со следующим вопросом и не могу догадаться ...
Обмен из базы Документооборот 1.4 в ERP 2 переливается
Спр.ВнутренниеДокументы > Спр.ДоговорыКонтрагентов
в ДО Спр.ВнутренниеДокументы есть реквизит СсылкаЕРП = УникальныйИдентификатор()
при обмене этот реквизит попадает в ЕРП в реквизит СсылкаДО = {ДО.СсылкаЕРП} и внимание ! происходит какая-то магия, - новый элемент в ERP Спр.ДоговорыКонтрагентов получает УникальныйИдентификатор() = {ERP.СсылкаДО}
То есть для нового элемента как я думаю выполняется код типа:
ДоговорКонтрагента.УстановитьСсылкуНового(ДоговорКонтрагента.СсылкаДО );

Но я не могу понять где это происходит ?!
Смотрю правила обмена - там такого нет ... В конфигурации ERP искал УстановитьСсылкуНового не нашел ...
Если есть идеи - подскажите где искать ?

В итоге: в обоих базах ДО и ERP одинаковые идентификаторы для соответственно Спр.ВнутренниеДокументы и Спр.ДоговорыКонтрагентов причем их можно использовать по кнопке "Перейти по ссылке";
Прикрепленные файлы:
ПравилаОбмена.xml
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. acces969 344 15.10.20 14:10 Сейчас в теме
Припоминаю, что с этим вопросом когда то лазил отладчиком в обработке обмена данными, анализировал логику работы. Насколько я помню, там создавался объект по уникальному идентификатору, заполнялись реквизиты, и лишь потом проверялся объект на существование в ИБ, и если нету - записывался. Как именно создавался, не могу вспомнить. Возможно, что-то вроде "ПолучитьОбъект( ....УникальныйИдентифкатор"
Ответ неполноценный, но поможет в поисках.
3. maks_20 164 15.10.20 14:28 Сейчас в теме
Может у вас в правилах синхронизации стоит поиск по УИД, тогда такое поведение логично - элемент выгружается, не находится в базе и создает новый с уид из базы-источника.
Vitaly1C8; +1 Ответить
4. Vitaly1C8 15.10.20 15:00 Сейчас в теме
(3) ситуация следующая: поиск по УИД не стоит, СсылкаЕРП указана в Полях_поиска
НО ! Она же является УИД-ом ! Есть ли какая-нибудь галочка/правило которая говорит "использовать УИД после успешного поиска по полям"

// ПКО_ДоговорыКонтрагентов_ПоследовательностьПолейПоиска
Если НомерВариантаПоиска = 1 тогда
	
	СтрокаИменСвойствПоиска = "СсылкаДО";
	
ИначеЕсли НомерВариантаПоиска = 2 тогда  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДоговорыКонтрагентов.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		|ГДЕ
		|	ДоговорыКонтрагентов.Номер = &Номер
		|	И ДоговорыКонтрагентов.Дата = &Дата";
	
	Запрос.УстановитьПараметр("Дата", СвойстваПоиска["Номер"]);
	Запрос.УстановитьПараметр("Номер", СвойстваПоиска["Дата"]);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если Не РезультатЗапроса.Пустой() Тогда 
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		СсылкаНаОбъект = Выборка.Ссылка;
	Иначе 
		СсылкаНаОбъект = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
	КонецЕсли;
	
Иначе 
	
	ПрекратитьПоиск = 1;
	
КонецЕсли;
Показать
Прикрепленные файлы:
5. maks_20 164 15.10.20 15:29 Сейчас в теме
(4) посмотрел правила, ничего подозрительного не увидел. Тут только отладкой смотреть. попробуйте на стороне загрузки посмотреть, что происходит в обработке "Универсальный обмен данными в формате XML". Проблема и при ручной загрузке и при загрузке автоматом через синхронизацию? Посмотрите еще после выгрузки сам пакет обмена, корректные ли в нем данные и не стоит ли в пакете для этого объекта по какой-то причине поиск по уид.
6. Vitaly1C8 15.10.20 16:04 Сейчас в теме
(5) Как таковой проблемы - нет. Просто пытаюсь понять: каким образом устанавливается УИД для новых элементов в базе приемнике;
7. Vitaly1C8 17.10.20 10:23 Сейчас в теме
(5) Хочу уточнить один момент: в обработчике ПоляПоиска, ПКО ДоговорыКонтрагентов следующий код:
Если НомерВариантаПоиска = 1 тогда
	
	СтрокаИменСвойствПоиска = "СсылкаДО";
	
ИначеЕсли НомерВариантаПоиска = 2 тогда  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДоговорыКонтрагентов.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		|ГДЕ
		|	ДоговорыКонтрагентов.Номер = &Номер
		|	И ДоговорыКонтрагентов.Дата = &Дата";
	
	Запрос.УстановитьПараметр("Дата", СвойстваПоиска["Номер"]);
	Запрос.УстановитьПараметр("Номер", СвойстваПоиска["Дата"]);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если Не РезультатЗапроса.Пустой() Тогда 
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		СсылкаНаОбъект = Выборка.Ссылка;
	Иначе 
		СсылкаНаОбъект = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
	КонецЕсли;
	
Иначе 
	
	ПрекратитьПоиск = 1;  // <<< Это не означает ли, что создать Объект надо с УИД источника ?!
	
КонецЕсли;
Показать


ПрекратитьПоиск = 1; // <<< Это не означает ли, что создать Объект надо с УИД источника ?!

ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект.
Оставьте свое сообщение

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