Обработки логических модулей размещаются в каталоге ExtFiles\LogicalModules.
В основной форме обработки необходимо реализовать определенный API.
Реквизиты и методы API логических модулей делится на обязательные и функциональные.
Основная форма обработки экспортирует следующие реквизиты и методы.
Реквизиты:
_Источник - произвольный тип, при выполнении обработчика устанавливается объект-источник вызова. _Отказ - булево, используется для отказа дальнейшего выполнения кода в источнике. _РезультатВызова - произвольный тип, используется для получения результата в постобработчике после выполнения функции источника.
Методы:
Функция ИнициализироватьМодуль(ПоЗависимости = Ложь) экспорт ... КонецФункции Процедура ДеИнициализироватьМодуль() Экспорт ... КонецПроцедуры
Функция является обязательной к экспорту. Вызывается при инициализации внешнего логического модуля.
Параметры:
Необходим для определения, вызвался ли данный метод напрямую или по зависимости из стороннего логического модуля.
В данной функции выполняется подписка на определенные обработчики в конфигурации или в защищенной компоненте.
Чтобы подписать модуль логики на обработку определенного события нужно выполнить код:
МенеджерОбъектов.ПолучитьОбщийОбъект("LogicalModules").НазначитьОбработчик(ИмяСобытия, ЭтаФорма, Неопределено);
ИмяСобытия - строка, определяющая конкретный обработчик, например «Авторизация.ВнешнееСобытие.ПредОбработка».
Процедура является обязательной к экспорту. Вызывается при деинициализации внешнего логического модуля.
В данной процедуре выполняется код при завершении работы модуля.
Обязательно выполнить отключение подключенных обработчиков:
МенеджерОбъектов.ПолучитьОбщийОбъект("LogicalModules").СнятьОбработчик(ИмяСобытия, ЭтаФорма);
Функциональные методы API содержат методы, которые позволяют расширить функционал программного обеспечения.
Данные методы делятся на 2 типа: предобработчик (выполняется в начале функции, позволяют полностью переопределить оригинальную функцию) и постобработчик (выполняется в конце функции, позволяет переопределить результат оригинальной функции).
Для работы данных методов необходимо:
1. подписать модуль логики на определенный пред-постобработчик (см. ИнициализироватьМодуль).
2. разместить в модуле, на который был подписан обработчик, экспортную функцию или процедуру, которая вызывается из оригинальной конфигурации или из защищенной компоненты.
Например,
Процедура Авторизация_ВнешнееСобытие_ПредОбработка(Источник, Событие, Данные) Экспорт __Отказ = Ложь; ... _Отказ = __Отказ; КонецПроцедуры