Распределенная информационная база – это совокупность информационных баз «1С:Предприятия» (узлов распределенной информационной базы), в которых поддерживается синхронизация конфигурации и данных. Распределенная информационная база имеет иерархическую структуру. У каждого узла распределенной информационной базы может быть один главный и произвольное число подчиненных узлов. «Самый главный узел», или узел, у которого нет главного узла, называется корневым узлом распределенной информационной базы. Каждый из узлов может обмениваться данными только со своими «соседями», то есть со своими главным и подчиненными узлами (рис. 3.6).
Рис. 3.6. Структура узлов распределенной информационной базы
Изменения конфигурации допускаются только в корневом узле распределенной информационной базы с последующим ее распространением по иерархии от корневого узла к его подчиненным и т. д. Таким образом, механизм управления распределенными информационными базами обеспечивает наличие во всех узлах распределенной информационной базы одной и той же конфигурации.
Изменение данных допускается в любом узле распределенной информационной базы. Синхронизация данных достигается путем распространения изменений данных, произведенных в одном узле, во все структуры распределенной информационной базы (рис. 3.7).
Рис. 3.7. Миграция данных в распределенной информационной базе
Если в рамках всей распределенной информационной базы поддерживается полная идентичность конфигурации, то полная идентичность данных не обязательна. Состав данных, изменения которых передаются в рамках распределенной информационной базы, может регулироваться как «по вертикали» (путем определения множества объектов конфигурации, данные которых участвуют в обмене), так и «по горизонтали» (путем задания условий на передачу и прием изменений на уровне отдельных элементов данных).
Планы обмена занимают центральное место в управлении распределенными информационными базами. Но для того, чтобы тот или иной план обмена мог использоваться для организации распределенной информационной базы, у него при конфигурировании должно быть установлено свойство Распределенная информационная база.
Данные в распределенной информационной базе переносятся с помощью сообщений, предоставляемых инфраструктурой сообщений. В отличие от универсальных механизмов обмена данными содержимое сообщений, передаваемых между узлами распределенной информационной базы, не может быть произвольным, а является регламентированным протоколом обмена, принятым для распределенной информационной базы.
Состав данных, изменениями которых будет производиться обмен в рамках распределенной информационной базы, определяется составом плана обмена. Вхождение объекта конфигурации в состав плана обмена показывает, что изменения данных, соответствующих объекту конфигурации, могут регистрироваться для узлов данного плана обмена. Но, в отличие от универсальных механизмов обмена данными, номенклатура данных, обмен которыми может производиться в рамках распределенной информационной базы, строго ограничена составом соответствующего плана обмена.
Для регистрации изменений данных в распределенной информационной базе задействована служба регистрации изменений. Элементы данных помещаются в сообщение с использованием механизмов XML-сериализации. Помимо изменений данных между узлами распределенной информационной базы передаются изменения конфигурации, а также некоторая дополнительная служебная информация. Регистрация изменений конфигурации и включение их в сообщение обмена в распределенной информационной базе осуществляются полностью автоматически и недоступны для пользователя и разработчика конфигураций.
В отличие от универсальных механизмов обмена данными формирование и прием сообщения обмена данными в распределенной информационной базе производятся «в одно действие», то есть все содержимое сообщения формируется путем вызова одного метода встроенного языка (листинг 3.16).
Листинг 3.16. Пример вызова метода «ЗаписатьИзменения()»
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, 0);
Считывание содержимого сообщения производится также путем вызова одного метода (листинг 3.17).
Листинг 3.17. Пример вызова метода «ПрочитатьИзменения()»
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);
Пример использования данных методов приведен в разделе «».
Для того чтобы управлять составом данных, помещаемых в сообщение, а также считываемых из сообщения и помещаемых в базу данных, на уровне отдельных элементов данных в модуле плана обмена могут быть определены обработчики событий:
Таким образом, в распределенной информационной базе практически полностью задействованы универсальные механизмы обмена данными, но имеются и некоторые дополнительные возможности, недоступные вне распределенной информационной базы.