Опубликован: 14.07.2011 | Уровень: специалист | Доступ: платный
Лекция 7:

Построение распределенных информационных систем

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Аннотация: В этой лекции рассматривается разработка распределенной информационной системы

Цель лекции: научиться создавать распределенные информационные системы, используя механизмы распределенной информационной базы

7.1. Постановка задачи

Наша организация расширяется. У нее появился дополнительный офис, который занимается закупками материалов. Но материалы может покупать и центральный офис организации. Руководством было принято решение о том, что учет поступления материалов в дополнительном офисе должен вестись с использованием того же ПО, что и в главном офисе. Учетные данные головного и дополнительного офисов нужно синхронизировать не реже одного раза в день для того, чтобы сотрудники и того и другого офиса имели бы правильное представление об остатках материалов в организации.

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

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

7.2. Предварительная подготовка

Прежде чем начинать реализацию механизма, подумаем о том, все ли в нашей конфигурации готово для того, чтобы он смог нормально работать. Предположим, у нас имеются две базы данных - одну назовем Главная база (ГБ), вторую - База филиала (ФБ). После того, как база ФБ создана, в ней и в базе ГБ есть один документ ПоступлениеМатериалов с номером 00001. В базах ГБ и ФБ, каждая из которых автономно используется до того момента, когда придет время обмениваться данными, создают по одному документу ПоступлениеМатериалов. Он, в соответствии со стандартными правилами нумерации, приобретает номер 00002. И в той и в другой базе содержатся разные документы, имеющие один и тот же номер. При синхронизации данных возникнет конфликтная ситуация. Для того чтобы подобной ситуации не допустить, нам нужно предусмотреть собственные правила нумерации объектов для баз ГБ и ФБ. Обычно подобная задача решается с помощью использования префиксов номеров, автоматически подставляемых при создании новых объектов.

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

По предварительной оценке, произведенной выше, нас интересует, во-первых, документ ПоступлениеМатериалов, во-вторых - все справочники, используемые в системе. То есть, нам нужно создать механизм формирования номеров (для документа) и кодов (для элементов справочников), который использовал бы префиксы для разделения нумерации элементов различных баз.

Создадим новую константу ( рис. 7.1):

Имя: ПрефиксНомера
Тип данных: Строка
Длина: 2
Добавление в конфигурацию новой константы

Рис. 7.1. Добавление в конфигурацию новой константы

Откроем форму констант ( Общие > Общие формы > ФормаКонстант ), и, воспользовавшись командой меню Форма > Размещение данных ( рис. 7.2) добавим на нее поле для редактирования новой константы ПрефиксНомера, установив галочки Вставить надписи и Разместить в диалоге автоматически для того, чтобы система сама разместила нужные данные на форме, рис. 7.2.

Автоматическое размещение нового поля на форме констант

Рис. 7.2. Автоматическое размещение нового поля на форме констант

Теперь добавим в модули объекта каждого справочника ( рис. 7.3) обработчик события ПриУстановкеНовогоКода (выбрав его из поля Процедуры и функции панели инструментов Модуль ) такого вида:

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
	Префикс=Константы.ПрефиксНомера.Получить();
КонецПроцедуры

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

Задание префикса номера в модуле справочника

Рис. 7.3. Задание префикса номера в модуле справочника

В модуль документа ПоступлениеМатериалов нам нужно внести похожее изменение, однако, здесь идет речь о номерах объекта, в итоге, получается следующий код:

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
	Префикс=Константы.ПрефиксНомера.Получить();
КонецПроцедуры

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

7.3. План обмена

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

При обмене данными в рамках распределенной информационной базы в плане обмена должен быть включен признак Распределенная информационная база. Кроме того, следует учитывать, что один из узлов распределенной базы является главным, остальные - подчиненными (в свою очередь, подчиненные узлы так же могут иметь другие подчиненные узлы, для которых они являются главными). От главного узла к подчиненным распространяются изменения в данных (например, новые документы, созданные в пользовательском режиме) и изменения в конфигурации (например, добавление нового реквизита в документ и т.д.). От подчиненного узла к главному передаются лишь изменения данных.

Создадим новый план обмена ( Общие > Планы обмена ), назовем его РаспределеннаяИБ, установим параметр Распределенная информационная база, рис. 7.4.

Создание нового плана обмена

Рис. 7.4. Создание нового плана обмена

Теперь нам нужно настроить состав объектов, которые будут участвовать в обмене. Для этого перейдем на вкладку Прочее окна редактирования свойств объекта и нажмем на кнопку Состав. Отметим следующие объекты ( рис. 7.5):

  • Корневой элемент Справочники
  • Документ ПоступлениеМатериалов
  • Корневой элемент Планы видов характеристик
  • Корневой элемент Планы счетов
  • Корневой элемент Регистры накопления
  • Корневой элемент Регистры бухгалтерии
Настройка состава плана обмена

Рис. 7.5. Настройка состава плана обмена

После того, как состав плана обмена настроен, запустим нашу конфигурацию в пользовательском режиме. Откроем форму списка плана обмена ( Операции > План обмена > Распределенная ИБ ), рис. 7.6.

Форма списка плана обмена

Рис. 7.6. Форма списка плана обмена

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

Код: ГБ
Наименование: Главная ИБ

Создадим еще один узел, заполним его параметры так ( рис. 7.7):

Код: ФБ
Наименование: ИБ филиала
Узлы плана обмена

увеличить изображение
Рис. 7.7. Узлы плана обмена

Обратите внимание на то, что в форме элемента ИБ филиала, а так же - в форме списка плана обмена, когда этот элемент выделен, активны три кнопки, с которыми мы до этого не встречались. Это, слева направо, следующие кнопки:

  • Создать начальный образ;
  • Записать изменения;
  • Прочитать изменения;

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

Создание начального образа ИБ, выбор типа расположения ИБ

Рис. 7.8. Создание начального образа ИБ, выбор типа расположения ИБ
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Евгений Орлов
Евгений Орлов
Кундуз Сабаева
Кундуз Сабаева

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.НачислениеЗарплаты.МодульОбъекта(45)}: Деление на 0
        Движение.Результат= Движение.ИсходныеДанные*Факт[0].РабочийДень/План[0].РабочийДень;

Андрей Нейман
Андрей Нейман
Россия
Илья Климов
Илья Климов
Россия, Пермь, ПНИПУ, 2013