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

Подготовка конфигурации к работе в распределенной информационной базе

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

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

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

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

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

Листинг 3.22. Пример назначения префикса

Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)

 

Префикс = Константы.ПрефиксНомеров.Получить();

 

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

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

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

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

Например, в регистре сведений хранится информация о характеристиках товаров. В основной отбор включены измерения:

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

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

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

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

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