Что такое план обмена в 1с

Что такое план обмена в 1с

Общие сведения об обмене данными

Механизмы обмена данными «1С:Предприятия» позволяют организовывать обмен информацией, хранимой в базе данных, с другими программными системами. К механизмам обмена данными могут быть отнесены:

  • Планы обмена,
  • XML-сериализация,
  • Средства чтения и записи документов XML.

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

Что такое план обмена

Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена. Обе эти задачи позволяет решать объект конфигурации «План обмена». Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена.

Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого, в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.

В обмене данными могут участвовать:

  • объекты базы данных: элементы справочников, документы и т. д.,
  • необъектные данные: наборы записей регистров, последовательностей, константы,
  • специальный объект встроенного языка – УдалениеОбъекта .

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

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

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

Читайте также:  Кирпичный забор между соседями

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

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

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

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

Добавление плана обмена

Раскроем ветвь «Общие» дерева объектов конфигурации и добавим новый объект конфигурации План обмена с именем Филиалы , представление объекта – Филиал . На закладке «Данные» создадим реквизит плана обмена Главный , имеющий тип Булево .

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

Теперь определим состав объектов, участвующих в обмене. Для этого на закладке «Основные» нажмем кнопку «Состав».

Создадим основную форму узла и добавим обработчик события формы ПриСозданииНаСервере . Этот обработчик понадобится нам для того, чтобы запретить установку реквизита Главный для предопределенного узла, соответствующего данной информационной базе.

Читайте также:  Момент инерции диска относительно оси симметрии

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

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

Для этого на закладке «Команды» создадим команду ЗарегистрироватьИзменения .

Кнопка «Зарегистрировать изменения» должна быть доступна только в случае, если текущий узел не является предопределенным для данной информационной базы, иначе регистрация изменений невозможна. Чтобы обеспечить такое поведение кнопки, создадим в модуле формы списка функцию, выполняющуюся на сервере без контекста и возвращающую истину, если переданный в функцию узел является предопределенным.

Затем в окне элементов формы выделим элемент Список , вызовем его палитру свойств и создадим обработчик события ПриАктивизацииСтроки .

Процедуры обмена данными

Для инициализации обмена данными мы используем обработку. Добавим новый объект конфигурации Обработка с именем ОбменДанными . На закладке Формы создадим основную форму обработки. В окне редактора форм на закладке «Команды» создадим команду формы ВыполнитьОбмен .

Алгоритм работы этой процедуры заключается в следующем: в цикле мы перебираем узлы, которые содержатся в плане обмена Филиалы , и для всех узлов, кроме себя самого, производим сначала чтение сообщений, поступивших из других узлов обмена. Затем мы формируем для них сообщения, предназначенные для передачи и содержащие измененные данные для этого узла.

Процедуры записи и чтения данных

Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы .

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

Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена. Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.
В состав данных, которыми может производиться обмен, входят элементы информационных структур базы данных, которые описываются следующими объектами встроенного языка:
Константа.МенеджерЗначения. ;
СправочникОбъект. ;
ДокументОбъект. ;
ПоследовательностьНаборЗаписей. ;
ПланВидовХарактеристикОбъект. ;
ПланСчетовОбъект. ;
ПланВидовРасчетаОбъект. ;
РегистрСведенийНаборЗаписей. ;
РегистрНакопленияНаборЗаписей. ;
РегистрБухгалтерииНаборЗаписей. ;
РегистрРасчетаНаборЗаписей. ;
ПерерасчетНаборЗаписей. ;
БизнесПроцессОбъект. ;
ЗадачаОбъект. ;
УдалениеОбъекта.

При описании состава данных плана обмена разработчик имеет возможность указать для каждого типа объектов признак Авторегистрация. Он определяет, каким образом план обмена будет отслеживать изменения этих данных.

Читайте также:  Светящиеся палочки сколько светятся

Состав данных обмена должен выглядеть следующим образом:

Теперь с помощью конструктора создадим основную форму узла, чтобы описать в ней некоторые действия, которые должны выполняться при создании нового узла обмена.
Суть этих действий будет заключаться в том, что при создании нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет своего рода начальная синхронизация узла обмена всеми данными обмена.
Прежде всего, опишем в модуле формы узла служебную переменную, которая будет хранить признак того, является ли записываемый узел новым или нет.
Перем РегистрацияВНовыйУзел;
Затем создадим обработчик события формы ПередЗаписью.
Код 1C v 8.х
Этот обработчик и будет устанавливать значение нашей служебной переменной в Истина в случае записи нового узла плана обмена.
После этого создадим обработчик события формы ПриЗаписи.
Код 1C v 8.х

Откроем конфигуратор и создадим новый объект конфигурации Обработка с именем ОбменДанными. Перейдем на закладку Прочее и откроем модуль объекта.
Создадим в нем процедуру ОбменСФилиалами.
Код 1C v 8.х
Теперь создадим основную форму обработки и в обработчик события нажатия кнопки Выполнить – КнопкаВыполнитьНажатие вставим вызов процедуры ОбменСФилиалами().
Код 1C v 8.х

Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы. Сначала создадим процедуру, которая используется нами при обмене данными, – ЗаписатьСообщениеСИзменениями.
Код 1C v 8.х
На этом создание процедуры записи данных обмена закончено.

Здравствуйте.
Только недавно изучаю 1С:Предприятие. Подскажите, пожалуйста, как пользоваться планами обмена? Необходимо выгрузить из справочника добавленных и измененных контрагентов. По примеру создал план обмена и обработку. В обработке написал код

но при выполнении кода получаю ошибку
<Обработка.Обработка1.Форма.Форма.Форма(14)>: Ошибка при вызове метода контекста (НачатьЗапись)
ЗаписьСообщения.НачатьЗапись(Запись, Узел);
по причине:
Код узла не может быть пустым

Ссылка на основную публикацию
Что такое windows 10 pro
Кто бы мог подумать, но до с даты релиза Windows 10 прошел почти год. Сотни миллионов пользователей уже обзавелись новой...
Что делать после заправки картриджа canon
Многие пользователи принтеров Canon после очередной дозаправки картриджей сталкиваются с различными неполадками в работе устройств, в том числе и с...
Что делать после скачивания драйвера для принтера
Часто задаваемый вопрос пользователей принтеров – как установить драйвер на принтер или МФУ. Вставьте флешку с драйвером в компьютер, в...
Что такое winmail dat
Получив очередное письмо по почте, пользователь может столкнуться с ситуацией, что часть информации в нем отсутствует и в списке файлов...
Adblock detector