Подписки на события
Для доработки объектов через подписки на события в БПР есть подсистема ПодпискиНаСобытия. Состав подсистемы:
Общие модули:
-
рздПодпискиНаСобытияДокументы
-
рздПодпискиНаСобытияСправочники
-
рздПодпискиНаСобытияПовтИсп
Подписки на события:
-
рздДокументыОбработкаЗаполнения
-
рздДокументыОбработкаПроведения
-
рздДокументыПередЗаписью
-
рздДокументыПриЗаписи
-
рздДокументыПриКопировании
-
рздСправочникиОбработкаЗаполнения
-
рздСправочникиПередЗаписью
-
рздСправочникиПриЗаписи
-
рздСправочникиПриКопировании
Подсистема позволяет не добавлять лишний раз метаданные подписки на события.
Реализация подписки на примере задачи “Реализовать собственные проверки в событие перед записью сп равочника сотрудника”:
- В модуле рздПодпискиНаСобытияПовтИсп в методе СправочникиПередЗаписью добавить соответствие:
Соответствие.Вставить(Тип("СправочникОбъект.Сотрудники"),"рздПодпискиНаСобытияСправочники.СотрудникиПередЗаписью");
- В модуле рздПодпискиНаСобытияСправочники в области ПередЗаписью реализовать экспортный метод СотрудникиПередЗаписью.
ВАЖНО, чтобы в реализованном методе была переадресация на общий модуль для текущего объекта (рздСотрудникиСервер) и данный метод имел шаблон, как в модулях Локализация.
Пример шаблона модуля (копировать его 1 в 1 не нужно, нужно добавить методы, которые нужны на текущий момент):
Шаблон модуля
#Область ПрограммныйИнтерфейс
#Область Проведение
// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
// МеханизмыДокумента - Массив - список имен учетных механизмов, для которых будет выполнена
// регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый документ.
// Отка з - Булево - Признак проведения документа.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то проведение документа выполнено не будет.
// РежимПроведения - РежимПроведенияДокумента - В данный параметр передается текущий режим проведения.
//
Процедура ОбработкаПроведения(Объект, Отказ, РежимПроведения) Экспорт
Движения = Объект.Движения;
ДополнительныеСвойства = Объект.ДополнительныеСвойства;
КонецПроцедуры
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
// ПроверяемыеРеквизиты - Массив - Массив путей к реквизитам, для которых будет выполнена проверка заполнения.
//
Процедура ОбработкаПроверкиЗаполнения(Объект, Отказ, ПроверяемыеРеквизиты) Экспорт
КонецПроцедуры
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект.
// ДанныеЗаполнения - Произвольный - Значение, которое используется как основание для заполнения.
// СтандартнаяОбработка - Булево - В данный параметр передается признак выполнения стандартной (системной) обработки события.
//
Процедура ОбработкаЗаполнения(Объект, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт
КонецПроцедуры
// Вызыва ется из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то запись выполнена не будет и будет вызвано исключение.
//
Процедура ОбработкаУдаленияПроведения(Объект, Отказ) Экспорт
КонецПроцедуры
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то запись выполнена не будет и будет вызвано исключение.
// РежимЗаписи - РежимЗаписиДокумента - В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи.
// РежимПроведения - РежимПроведенияДокумента - В данный параметр передается текущий режим проведения.
//
Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт
КонецПроцедуры
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет и будет вызвано исключение.
//
Процедура ПриЗаписи(Объект, Отказ) Экспорт
КонецПроцедуры
// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// ОбъектКопирования - ДокументОбъект - Исходный документ, который является источником копирования.
//
Процедура ПриКопировании(Объект, ОбъектКопирования) Экспорт
КонецПроцедуры
#КонецОбласти
#Область ПодключаемыеКоманды
// Определяет список команд создания на основании.
//
// Параметры:
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
КонецПроцедуры
// Добавляет команду создания документа "Авансовый отчет".
//
// Параметры:
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//
Процедура ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
КонецПроцедуры
// Определяет список команд отчетов.
//
// Параметры:
// КомандыОтчетов - См. ВариантыОтчетовП ереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
// Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Печать
// Формирует печатные формы.
//
// Параметры:
// МассивОбъектов - Массив - ссылки на объекты, которые нужно распечатать;
// ПараметрыПечати - Структура - дополнительные настройки печати;
// КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр)
// ОбъектыПечати - СписокЗначений - значение - ссылка на объект;
// представление - имя области в которой был выведен объект (выходной параметр);
// ПараметрыВывода - Структура - дополнительные параметры сформированных табличных документов (выходной параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункци и
#Область Проведение
// Процедура дополняет тексты запросов проведения документа.
//
// Параметры:
// Запрос - Запрос - Общий запрос проведения документа.
// ТекстыЗапроса - СписокЗначений - Список текстов запроса проведения.
// Регистры - Строка, Структура - Список регистров проведения документа через запятую или в ключах структуры.
//
Процедура ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры)
КонецПроцедуры
#КонецОбласти
#Область Печать
#КонецОбласти
#КонецОбласти