Skip to main content

Подписки на события

Для доработки объектов через подписки на события в БПР есть подсистема ПодпискиНаСобытия. Состав подсистемы:

Общие модули:

  • рздПодпискиНаСобытияДокументы

  • рздПодпискиНаСобытияСправочники

  • рздПодпискиНаСобытияПовтИсп

Подписки на события:

  • рздДокументыОбработкаЗаполнения

  • рздДокументыОбработкаПроведения

  • рздДокументыПередЗаписью

  • рздДокументыПриЗаписи

  • рздДокументыПриКопировании

  • рздСправочникиОбработкаЗаполнения

  • рздСправочникиПередЗаписью

  • рздСправочникиПриЗаписи

  • рздСправочникиПриКопировании

Подсистема позволяет не добавлять лишний раз метаданные подписки на события.

Реализация подписки на примере задачи “Реализовать собственные проверки в событие перед записью справочника сотрудника”:

  1. В модуле рздПодпискиНаСобытияПовтИсп в методе СправочникиПередЗаписью добавить соответствие:
Соответствие.Вставить(Тип("СправочникОбъект.Сотрудники"),"рздПодпискиНаСобытияСправочники.СотрудникиПередЗаписью");
  1. В модуле рздПодпискиНаСобытияСправочники в области ПередЗаписью реализовать экспортный метод СотрудникиПередЗаписью.

ВАЖНО, чтобы в реализованном методе была переадресация на общий модуль для текущего объекта (рздСотрудникиСервер) и данный метод имел шаблон, как в модулях Локализация.

Пример шаблона модуля (копировать его 1 в 1 не нужно, нужно добавить методы, которые нужны на текущий момент):

Шаблон модуля
#Область ПрограммныйИнтерфейс

#Область Проведение

// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
// МеханизмыДокумента - Массив - список имен учетных механизмов, для которых будет выполнена
// регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт

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

#КонецОбласти

#Область ОбработчикиСобытий

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый документ.
// Отказ - Булево - Признак проведения документа.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то проведение документа выполнено не будет.
// РежимПроведения - РежимПроведенияДокумента - В данный параметр передается текущий режим проведения.
//
Процедура ОбработкаПроведения(Объект, Отказ, РежимПроведения) Экспорт

Движения = Объект.Движения;
ДополнительныеСвойства = Объект.ДополнительныеСвойства;

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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то будет выполнен отказ от продолжения работы после выполнения проверки заполнения.
// ПроверяемыеРеквизиты - Массив - Массив путей к реквизитам, для которых будет выполнена проверка заполнения.
//
Процедура ОбработкаПроверкиЗаполнения(Объект, Отказ, ПроверяемыеРеквизиты) Экспорт


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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект.
// ДанныеЗаполнения - Произвольный - Значение, которое используется как основание для заполнения.
// СтандартнаяОбработка - Булево - В данный параметр передается признак выполнения стандартной (системной) обработки события.
//
Процедура ОбработкаЗаполнения(Объект, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт


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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то запись выполнена не будет и будет вызвано исключение.
//
Процедура ОбработкаУдаленияПроведения(Объект, Отказ) Экспорт


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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина,
// то запись выполнена не будет и будет вызвано исключение.
// РежимЗаписи - РежимЗаписиДокумента - В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи.
// РежимПроведения - РежимПроведенияДокумента - В данный параметр передается текущий режим проведения.
//
Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт


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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// Отказ - Булево - Признак отказа от записи.
// Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет и будет вызвано исключение.
//
Процедура ПриЗаписи(Объект, Отказ) Экспорт


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

// Вызывается из соответствующего обработчика документа
//
// Параметры:
// Объект - ДокументОбъект - Обрабатываемый объект
// ОбъектКопирования - ДокументОбъект - Исходный документ, который является источником копирования.
//
Процедура ПриКопировании(Объект, ОбъектКопирования) Экспорт


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

#КонецОбласти

#Область ПодключаемыеКоманды

// Определяет список команд создания на основании.
//
// Параметры:
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
// Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт

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

// Добавляет команду создания документа "Авансовый отчет".
//
// Параметры:
// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//
Процедура ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт


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

// Определяет список команд отчетов.
//
// Параметры:
// КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
// Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт


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

// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

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

#КонецОбласти

#Область Печать

// Формирует печатные формы.
//
// Параметры:
// МассивОбъектов - Массив - ссылки на объекты, которые нужно распечатать;
// ПараметрыПечати - Структура - дополнительные настройки печати;
// КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр)
// ОбъектыПечати - СписокЗначений - значение - ссылка на объект;
// представление - имя области в которой был выведен объект (выходной параметр);
// ПараметрыВывода - Структура - дополнительные параметры сформированных табличных документов (выходной параметр).
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт


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

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Проведение

// Процедура дополняет тексты запросов проведения документа.
//
// Параметры:
// Запрос - Запрос - Общий запрос проведения документа.
// ТекстыЗапроса - СписокЗначений - Список текстов запроса проведения.
// Регистры - Строка, Структура - Список регистров проведения документа через запятую или в ключах структуры.
//
Процедура ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры)


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

#КонецОбласти

#Область Печать

#КонецОбласти

#КонецОбласти