Получение измененных и удаленных данных узла плана обмена
К таблицам изменений планов обмена можно строить запросы. И если данные удалить, то в таблице изменений ссылка будет заполнена (<Объект не найден ...>), а в данных этой ссылки не будет (NULL). Пример запроса:
К таблицам изменений планов обмена можно строить запросы. И если данные удалить, то в таблице изменений ссылка будет заполнена (<Объект не найден ...>), а в данных этой ссылки не будет (NULL). Пример запроса:
ВЫБРАТЬ
НоменклатураИзменения.Ссылка КАК Ссылка,
НоменклатураИзменения.Ссылка.Ссылка КАК Ссылка1
ИЗ
Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
ГДЕ
НоменклатураИзменения.Узел = &Узел
//И НоменклатураИзменения.Ссылка.Ссылка ЕСТЬ NULL
Результат:Первый - Первый
<Объект не найден> (92852:832900155d00f10711eb173504f418ec) - <NULL>
Четвертый - Четвертый
@yellow_pad | #ПланОбмена #интеграция #РегистрацияИзменений #запросыКак исключить параллельное выполнение обмена
При обмене измененными данными, чтобы не произошло внезапной коллизии при выполнении обмена в одно время в разных сеансах, можно просто установить управляемую блокировку на узел плана обмена. Пример процедуры:
@yellow_pad | #1С #обмены #ПланОбмена #блокировки #УправляемаяБлокировка #код
При обмене измененными данными, чтобы не произошло внезапной коллизии при выполнении обмена в одно время в разных сеансах, можно просто установить управляемую блокировку на узел плана обмена. Пример процедуры:
Процедура ЗаблокироватьСеансОбмена(УзелПланаОбмена)
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("ПланОбмена." + УзелПланаОбмена.Метаданные().Имя);
ЭлементБлокировки.УстановитьЗначение("Ссылка", УзелПланаОбмена);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
КонецПроцедуры
Если этого не сделать, то мы можем, например, в разных сеансах выгрузить одни и те же данные. А можем удалить регистрацию данных, выгружаемых другим сеансом.@yellow_pad | #1С #обмены #ПланОбмена #блокировки #УправляемаяБлокировка #код
Изменение данных без регистрации изменений
Выполняем двусторонний обмен одних и тех же объектов с внешней системой. Например, накладная выгружается в ТСД, а после обработки загружается. Изменения данных регистрируются авторегистрацией в плане обмена.
Если не отменять регистрацию, то при загрузке накладной мы её запишем, и она зарегистрируется к обмену и выгрузится. Это лишнее.
Подробнее на ИТС
@yellow_pad | #1С #ПланОбмена #Авторегистрация
Выполняем двусторонний обмен одних и тех же объектов с внешней системой. Например, накладная выгружается в ТСД, а после обработки загружается. Изменения данных регистрируются авторегистрацией в плане обмена.
Если не отменять регистрацию, то при загрузке накладной мы её запишем, и она зарегистрируется к обмену и выгрузится. Это лишнее.
Объект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
Это приведет к тому, что список узлов, для которых должно быть зарегистрировано изменение данных, автоматически заполнен не будет. Если в процессе записи коллекция узлов-примеников останется пустой, то регистрации изменения данных не произойдет.Подробнее на ИТС
@yellow_pad | #1С #ПланОбмена #Авторегистрация