Универсальный обмен данными. Не регистрировать загруженные объекты в планах обмена

1. Drivingblind 228 11.01.20 12:32 Сейчас в теме
Всем привет! Настраиваю двусторонний обмен между УПП и ERP. УПП нетиповая, разработаны свои правила обмена УПП-ERP и ERP-УПП. Настроены планы обмена на авторегистрацию изменений на обоих базах.
Для автоматизации обмена использую программный вызов обработки Универсальный обмен данными в формате XML в режиме прямого подключения к БД-приемнику через COM + использование планов обмена.

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

Подскажите пожалуйста, каким образом не регистрировать загружаемые объекты в планах обмена? Или каким образом снимать с них регистрацию? Может быть в обработке Универсальный обмен данными в формате XML есть какие-то настройки, которые я пропустил?

Прошу прощения за возможные неточности в описании, т.к. с подобными задачами сталкиваюсь впервые. Заранее спасибо за ответ!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. davealone 166 11.01.20 14:24 Сейчас в теме +0.03 $m
(1)
По идее нужно просто отключить автозаполнение у объекта:

Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
Drivingblind; acanta; +2 Ответить
7. dhurricane 11.01.20 18:41 Сейчас в теме +0.05 $m
Я бы рекомендовал попробовать не сбрасывать признаки "АвтоЗаполнение" и "Загрузка", а напротив - заполнять "Отправителя":
Объект.ОбменДанными.Отправитель = УзелПланаОбменаСсылка;
Если я не ошибаюсь, такой прием отключит регистрацию полученных данных только на узле-отправителе, а не на всех прочих.

К сожалению, не нашел подходящей настройки в обработке универсального обмена. Стало быть реализовать заполнение отправителя придется где-нибудь в ПКО, в глобальном обработчике загрузки объектов.
STivO; Drivingblind; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Drivingblind 228 11.01.20 12:51 Сейчас в теме
Есть идея убрать авторегистрацию в планах обмена и регистрировать подпиской на событие ПриЗаписи, в которой уже проверять
Объект.ОбменДанными.Загрузка = Ложь

но хотелось бы выслушать мнения других людей
3. acanta 11.01.20 12:54 Сейчас в теме
Авто регистрация не выключается программно при записи объекта?
4. Drivingblind 228 11.01.20 12:58 Сейчас в теме
(3) Не совсем понял, вы предлагаете программно прописать отключение регистрации в ПКО? или уже в базе-приемнике?
5. Drivingblind 228 11.01.20 13:00 Сейчас в теме
(3) Я просто думал, может быть, где-то в планах обмена или обработке есть какая-нибудь настройка для этого
6. davealone 166 11.01.20 14:24 Сейчас в теме +0.03 $m
(1)
По идее нужно просто отключить автозаполнение у объекта:

Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
Drivingblind; acanta; +2 Ответить
8. Drivingblind 228 12.01.20 11:24 Сейчас в теме
(6)
(7)
Спасибо за советы. Буду пробовать! :)
9. Drivingblind 228 13.01.20 09:14 Сейчас в теме
(6)
(7)
Не заработало. Пробовал и в глобальных настройках конвертации, и для каждого объекта отдельно прописать.
Такое ощущение, что КД отрабатывает раньше, чем устанавливается отправитель.
Попробую теперь копать "Правила регистрации объектов"
7. dhurricane 11.01.20 18:41 Сейчас в теме +0.05 $m
Я бы рекомендовал попробовать не сбрасывать признаки "АвтоЗаполнение" и "Загрузка", а напротив - заполнять "Отправителя":
Объект.ОбменДанными.Отправитель = УзелПланаОбменаСсылка;
Если я не ошибаюсь, такой прием отключит регистрацию полученных данных только на узле-отправителе, а не на всех прочих.

К сожалению, не нашел подходящей настройки в обработке универсального обмена. Стало быть реализовать заполнение отправителя придется где-нибудь в ПКО, в глобальном обработчике загрузки объектов.
STivO; Drivingblind; +2 Ответить
10. uno-c 237 13.01.20 16:38 Сейчас в теме +0.02 $m
Такое ощущение, что КД отрабатывает раньше, чем устанавливается отправитель.

А при записи объекта в получающей базе
ЗаписываемыйОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
тоже не помогло? (*ЗаписываемыйОбъект - условное название, в КД оно по-другому должно называться)
Drivingblind; +1 Ответить
11. uno-c 237 13.01.20 17:22 Сейчас в теме
(10)Извините, не при записи, а перед записью в приемнике. ПриЗаписи - уже поздно скорее всего, таблица изменений наверно уже пополнена.
Drivingblind; +1 Ответить
12. Drivingblind 228 14.01.20 08:21 Сейчас в теме
Спасибо всем за помощь! Проблема была в том, что на вкладке "После загрузки данных" была пост-обработка объектов, которая ещё кое-что дописывала, следовательно, объекты изменялись и снова регистрировались в плане обмена.
На вкладке "После загрузки объекта" и "После загрузки данных" добавил следующие строки:
УзелОбменаУПП = ПланыОбмена.ОбменERPУПП.НайтиПоКоду("002"); 
Попытка
	Объект.ОбменДанными.Отправитель = УзелОбменаУПП;
Исключение
КонецПопытки;

Чтобы объект не регистрировался на узле-отправителе.

Как вариант, можно было ещё на вкладке "После загрузки данных" добавить код, который бы удалял изменения в нужных узлах:
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Объект);
Оставьте свое сообщение

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