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