Использование возможностей работы с XML-документами в 1С

Категория: Учебники по 1С » Технологии интеграции 1С Предприятия 8.2

Для получения выборки данных, для которых зарегистрированы изменения, используется метод ВыбратьИзменения () . Для обхода полученных данных используется метод Следующий () выборки. В процессе выборки изменений в записи таблиц регистрации изменений (которые раньше не выгружались и у которых, соответственно, в поле таблицы НомерСообицения находится значение Null) проставляется номер сообщения обмена данными, в котором должны передаваться изменения.

 

Представленный алгоритм выгрузки предполагает, что отправленные сообщения могут быть потеряны по тем или иным причинам. Если потерь сообщения не может быть в принципе (гарантированная доставка), то в конце алгоритма можно поместить следующую строку:

ПланыОбмена.УдалитьРегистрациюИзменений(Узел,НомерСообщения);

 

 

В этом случае из таблицы регистрации изменений будут удалены записи, относящиеся к узлу, ссылка на который передана в качестве первого параметра метода. Причем будут удалены не все записи, а только те, в которых номер сообщения равен или меньше того значения, которое передано в качестве второго параметра метода. Это те записи, в которых была произведена первая отправка изменений.

 

Фрагмент кода, в котором производится чтение сообщения, содержащего измененные данные, выглядит следующим образом: 

В приведенных выше примерах чтения и записи сообщений не учитывалось, что при обмене данными может случиться так, что один и тот же элемент данных будет изменен одновременно в двух обменивающихся данными узлах. В этом случае непонятно, какое из изменений должно быть в конечном счете принято. Такая ситуация называется коллизией.

 

Один из способов разрешить коллизию - определить, какой из узлов является главным, а какой - подчиненным. При этом должно быть принято изменение, сделанное в главном узле, а изменение, сделанное в подчиненном узле, должно быть отвергнуто.

 

Для реализации этого при приеме сообщения перед записью данных необходимо установить, зарегистрировано ли изменение этих данных, и в зависимости от роли узла в данной паре получатель-отправитель принять решение: записывать или не записывать данные.

 

Ниже приведен пример реализации стратегии «главный - подчиненный» при чтении сообщения. Предполагается, что для хранения роли узла в плане обмена был определен реквизит Главный, имеющий тип Булево. 

Следует обратить внимание на необходимость установки у загружаемого элемента данных свойства Загрузка в значение Истина. В обработчиках событий записи объекта рекомендуется отслеживать данный режим и не делать каких-либо проверок на корректность заполнения, присутствие каких- либо связанных данных. Это обусловлено тем фактом, что на момент загрузки данного объекта другие объекты могут быть еще не загружены.

dle

Помоги проекту! Расскажи друзьям о сайте: