1
0
mirror of https://github.com/ones-devguide/dev-rules.git synced 2026-04-06 07:54:27 +02:00
Files
dev-rules/docs/psl/subscription.md
2024-12-28 11:58:24 +07:00

21 KiB

sidebar_position, sidebar_label, title
sidebar_position sidebar_label title
3 Подписки на события Подписки на события

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область СобытияОбъекта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область СобытияФормы

Процедура ФормаДокумента_ПриЧтениинаСервере(Форма, ТекущийОбъект) Экспорт

ФормаДокумента_СоздатьРеквизиты(Форма);
ФормаДокумента_ЗаполнитьРеквизиты(Форма);
ФормаДокумента_СоздатьЭлементыФормы(Форма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</details>