Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Добавление плана обмена. В режиме «Конфигуратор»




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

В режиме «Конфигуратор»

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

Раскроем ветвь Общие дерева объектов конфигурации и добавим новый объект конфигурации План обмена с именем Филиалы, пред- ставление объекта – Филиал.

На закладке Данные создадим реквизит плана обмена Главный, имеющий тип Булево (рис. 24. 2).

 


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

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

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

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

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

 

Рис. 24. 3. Состав данных обмена


Теперь на закладке Формы окна редактирования объекта конфигу- рации нажмем кнопку открытия и с помощью конструктора создадим основную форму узла (рис. 24. 4).

 

 

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

Этот обработчик понадобится нам для того, чтобы запретить установку реквизита Главный для предопределенного узла, соответ- ствующего данной информационной базе (листинг 24. 4).

листинг 24. 4. Обработчик события формы «ПриСозданииНаСервере»

 

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

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


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

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

В открывшейся палитре свойств нажмем кнопку открытия в строке

Действие.

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

В модуле формы будут созданы шаблоны двух процедур: клиентской процедуры ЗарегистрироватьИзменения() и серверной внеконтекстной процедуры ЗарегистрироватьИзмененияНаСервере(), которая вызывается из клиентской процедуры.

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

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

Поэтому изменим текст модуля следующим образом (листинг 24. 5).

листинг 24. 5. Текст обработчика команды «ЗарегистрироватьИзменения»

 


В процедуру ЗарегистрироватьИзмененияНаСервере() мы поместим следующий текст (листинг 24. 6).

листинг 24. 6. Процедура «ЗарегистрироватьИзмененияНаСервере»

 

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

В этот метод передается ссылка на текущий узел плана обмена

Филиалы.

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

В заключение перейдем на закладку Форма и перетащим команду ЗарегистрироватьИзменения из окна команд в командную панель формы.

В результате форма списка примет вид (рис. 24. 5).

 


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

«Форма». Поэтому кнопке присваивается имя ФормаЗарегистрирова- тьИзменения. Именно по этому имени мы будем обращаться к кнопке из встроенного языка (см. листинг 24. 8).

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

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

листинг 24. 7. Функция «ПредопределенныйУзел()»

 

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

Заполним обработчик следующим образом (листинг 24. 8).

 

листинг 24. 8. Обработчик события «ПриАктивизацииСтроки()» элемента формы «Список»


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

На этом создание плана обмена завершено, и мы можем перейти непосредственно к созданию процедур обмена данными.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...