Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Использование инфраструктуры сообщений. Квитирование          
Batchir Подменю пользователя
сообщение 09.02.09, 14:08
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Инфраструктура сообщений является неотъемлемой частью механизмов обмена данными платформы 1С:Предприятия 8. Она предоставляет возможности по формированию и анализу сообщений обмена. 
Сообщения обмена содержат не только данные, которыми производится обмен, но и служебную информацию - заголовок сообщения. В заголовке сообщения обмена указывается:

  • узел-источник сообщения;
  • узел-приемник, которому данное сообщение адресовано;
  • номер данного сообщения;
  • номер последнего принятого от узла-приемника сообщения.
Номера сообщений используются в механизмах обмена данными для контроля доставки переданной информации, а также для недопущения повторного чтения уже прочитанных сообщений обмена. При отправке сообщения в его заголовок записывается номер данного сообщения, а также номер последнего принятого сообщения. При получении сообщения эти номера анализируются. Номер последнего принятого сообщения является своего рода квитанцией о доставке сообщения. По ней узел-приемник сообщения сможет определить, что данные, выгруженные в сообщении с указанным номером, были успешно получены адресатом. Номер отправленного сообщения будет использован впоследствии при формировании ответного сообщения. 

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

Запись сообщения обмена

Для создания сообщения обмена предназначен объект ЗаписьСообщенияОбмена. При его помощи выполняются все необходимые действия для формирования правильного сообщения обмена:

  • формируется заголовок сообщения;
  • осуществляется блокировка объекта узла плана обмена;
  • осуществляется правильное завершение записи сообщения;
  • значение последнего переданного сообщения записывается в объект узла-приемника сообщения.
Начало записи сообщения обмена

Запись сообщения начинается с вызова метода НачатьЗапись() объекта ЗаписьСообщенияОбмена. В качестве параметров метода передаются объект ЗаписьXML (при помощи которого производится формирование сообщения в формате XML) и номер формируемого сообщения обмена. В этот момент происходит формирование заголовка сообщения и блокируется объект представляющий узел-приемник сообщения. После чего объект ЗаписьXML и номер формируемого сообщения становятся доступны через данный экземпляр объекта ЗаписьСообщенияОбмена для формирования тела сообщения обмена.

Выборка и запись изменений данных

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

Выбранные изменения могут быть записаны в сообщение обмена, используя экземпляр объекта ЗаписьXML, доступный из экземпляра объекта ЗаписьСообщенияОбмена.

Завершение записи сообщения обмена

Для завершения процесса записи сообщения обмена необходимо осуществить вызов метода ЗакончитьЗапись() объекта ЗаписьСообщенияОбмена. В объект ЗаписьXML выполняется запись завершающих сообщение конструкций (завершение элементов XML). После чего происходит установка в объект узла-приемника сообщения номера сформированного сообщения, и осуществляется запись данного объекта. Сообщение обмена считается сформированным и готовым к отправке.

Получение сообщения обмена


При получении сообщения производится анализ заголовка сообщения:

  • проверяется совпадение кодов узла-источника и узла-приемника сообщения;
  • существляется блокировка объекта узла-источника сообщения;
  • производится проверка номера полученного сообщения;
  • номер полученного сообщения записывается в объект узла-приемника.
Для выполнения всех перечисленных действий служит объект ЧтениеСообщенияОбмена.

Начало чтения сообщения

Чтение сообщения начинается с вызова метода НачатьЧтение() объекта ЧтениеСообщенияОбмена, в качестве параметров метода передаются объект ЧтениеXML (при помощи которого производится чтение сообщения в формате XML) и допустимый номер сообщения обмена.

При выполнении данного метода производится чтение заголовка сообщения обмена. Проверяется наличие плана обмена, в рамках которого сформировано полученное сообщение. Считанные коды узлов источника и приемника сообщения анализируются: код узла отправителя должен совпадать с кодом одного из узлов плана обмена (за исключением узла ЭтотУзел), код узла-приемника сообщения должен совпадать с кодом узла ЭтотУзел плана обмена. При обнаружении узла-отправителя, его объект (узел плана обмена) блокируется.

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

Номера и узлы плана обмена устанавливаются в соответствующие поля объекта ЧтениеСообщенияОбмена.

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

Чтение тела сообщения


После чтения и анализа заголовка сообщения обмена можно производить чтение тела сообщения - полученных данных. Для этого необходимо воспользоваться объектом ЧтениеXML (полученным из соответствующего свойства объекта ЧтениеСообщенияОбмена).

Завершение чтения сообщения

После прочтения содержимого сообщения обмена необходимо завершить чтение сообщения. Для этого необходимо вызвать метод ЗакончитьЧтение() объекта ЧтениеСообщенияОбмена. В результате вызова данного метода номер полученного сообщения будет записан в объект узла-отправителя сообщения обмена.

Односторонний обмен

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

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

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

Односторонний обмен без необходимости получения ответных сообщений

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 7:19
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!