Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Методика включения в сообщение обмена дополнительной информации
Дальше: Примеры реализации автоматического обмена данными

Организация одностороннего обмена

В некоторых случаях нет необходимости организовывать полноценный обмен данными между двумя узлами ? достаточно передавать данные в одном направлении (подобная задача может возникнуть как при организации универсального обмена, так и в контексте распределенной информационной базы). Однако для правильного функционирования механизмов обмена и инфраструктуры сообщений, в частности, необходимо получение ответных сообщений, содержащих квитанции о доставке данных.

Все механизмы реализации одностороннего обмена можно разбить на две большие группы:

Для реализации одностороннего обмена без необходимости получения ответных сообщений можно воспользоваться схемой обмена с гарантированной доставкой. Суть этой схемы в следующем: после формирования сообщения обмена производится удаление регистрации изменений. Этим действием подтверждается, что данные (записанные в только что сформированное сообщение) будут гарантированно доставлены адресату (листинг 3.96).

Листинг 3.96. Пример удаления регистрации изменений

Узел = ПланыОбмена.Магазины.НайтиПоКоду("Магазин");

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

В случае если данный механизм используется в распределенных базах данных, следует помнить, что метод УдалитьРегистрациюИзменений() не очищает изменения, связанные со структурой конфигурации. То есть если конфигурация изменяется (и используется распределенная информационная база), отказаться от передачи ответных квитанций не получится.

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

Последний вариант является наименее предпочтительным, так как предполагает передачу фактически ненужных данных.

Листинг 3.97. Процедура «ПриОтправкеДанныхПодчиненному()»

// В зависимости от направления можно использовать либо

// событие ПриОтправкеДанныхПодчиненному, либо ПриОтправкеДанныхГлавному

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)

 

ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;

 

КонецПроцедуры

Листинг 3.98. Пример записи сообщения обмена

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.ОткрытьФайл("c:\out.xml");

ЗаписьXML.ЗаписатьОбъявлениеXML();

 

// Создать новое сообщение.

Узел=ПланыОбмена.Магазины.НайтиПоКоду("Магазин");

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();

ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);

ЗаписьСообщения.ЗакончитьЗапись();

ЗаписьXML.Закрыть();

Листинг 3.99. Фрагмент сообщения обмена

<v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">

<v8msg:Header>

<v8msg:ExchangePlan>Магазины</v8msg:ExchangePlan>

<v8msg:To>Магазин</v8msg:To>

<v8msg:From>ЦентрОфис</v8msg:From>

<v8msg:MessageNo>6</v8msg:MessageNo>

<v8msg:ReceivedNo>0</v8msg:ReceivedNo>

</v8msg:Header>

<v8msg:Body/>

</v8msg:Message>

Назад: Методика включения в сообщение обмена дополнительной информации
Дальше: Примеры реализации автоматического обмена данными