mirror of
https://github.com/firstBitSportivnaya/PSSL.git
synced 2024-11-21 17:56:47 +02:00
Added reverse assignment (#88)
Доработана установка параметров процедуры после выполнения подписок на события
This commit is contained in:
parent
62d23839ff
commit
7805fb0f48
@ -1,21 +1,49 @@
|
||||
# Подсистема "Подписки на события"
|
||||
|
||||
Подписки на события применяются для реализации дополнительной постобработки или проверок, которые активируются после определённых событий в типовых объектах или модулях менеджера.
|
||||
В случае отстутствия типовой подписки, используется подсистема **"Подписки на события"**. Если нужно внести изменения в типовую логику работы подписки, используется заимствование методов в расширении с аннотацией &ИзменениеИКонтроль.
|
||||
В случае отсутствия типовой подписки используется подсистема **"Подписки на события"**. Если нужно внести изменения в типовую логику работы подписки, используется заимствование методов в расширении с аннотацией &ИзменениеИКонтроль.
|
||||
|
||||
Общая структура подписок на события:
|
||||
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработчики")
|
||||
- В каждом общем модуле распологаются процедуры-обработчики класса (пример: "пбп_ДокументыОбработкаПроведения", "пбп_СправочникиПриЗаписи")
|
||||
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
|
||||
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** добавить в соответствие тип объекта и вызываемую процедуру в одноименной функции **(Указывать только имя процедуры!)**
|
||||
**Общая структура подписок на события:**
|
||||
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
|
||||
- В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
|
||||
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
|
||||
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**
|
||||
|
||||
Порядок действий при работе с подсистемой:
|
||||
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **пбп_ДокументыОбработкаПроведения**, **пбп_СправочникиПриЗаписи** и так далее.
|
||||
Недопускается смешение типов объектов и событий в одной подписке. Если подписки не существует, нужно её добавить, а так же общий модуль с аналогичным названием (напр. **пбп_ДокументыОбработчики** - и подписка, и общий модуль).
|
||||
**Важно!**
|
||||
- В одноимённых обработчиках событий необходимо после выполнения метода конфигурации делать обратное присвоение параметров из массива "ПараметрыМетода", так как они могут быть изменены в выполняемом методе.
|
||||
- В обработчиках, указанных в подписках на события, реализован возврат параметра **Отказ** согласно концепции фирмы 1С. При необходимости ускорить работу и избежать выполнения кода при условии **Отказ = Истина**, добавьте проверку этого условия в место проверки **ОбменДанными.Загрузка**.
|
||||
**Пример:**
|
||||
```1C (BSL)
|
||||
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
|
||||
Если Источник.ОбменДанными.Загрузка Или Отказ Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
**Пример обратного присвоения:**
|
||||
```1C (BSL)
|
||||
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
|
||||
// ...
|
||||
ПараметрыМетода = Новый Массив;
|
||||
ПараметрыМетода.Добавить(Источник);
|
||||
ПараметрыМетода.Добавить(Отказ);
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
Отказ = ПараметрыМетода[1];
|
||||
// ...
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
**Порядок действий при работе с подсистемой:**
|
||||
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.
|
||||
**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** - подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
|
||||
Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
|
||||
- Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
|
||||
- Структура общего модуля обработчиков:
|
||||
- В области **СлужебныйПрограммныйИнтерфейс** располагать обработчики объектов, в ней располагаются подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс**, для группировки по подсистемам.
|
||||
- В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
|
||||
```1C (BSL)
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
@ -50,7 +78,7 @@
|
||||
#КонецОбласти
|
||||
```
|
||||
|
||||
**Пример обработчика общего модуля "пбп_ДокументыОбработчики":**
|
||||
**Пример обработчика общего модуля "пбп_ДокументыОбработкаСобытий":**
|
||||
```1C (BSL)
|
||||
Процедура ПриЗаписи(Источник, Отказ) Экспорт
|
||||
|
||||
@ -77,7 +105,7 @@
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найти функцию с названием объекта и события и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
|
||||
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
|
||||
|
||||
**Пример вызова процедуры для заполнения соответствия:**
|
||||
```1C (BSL)
|
||||
|
@ -46,6 +46,8 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -79,6 +81,9 @@
|
||||
ПараметрыМетода.Добавить(ТекстЗаполнения);
|
||||
ПараметрыМетода.Добавить(СтандартнаяОбработка);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
СтандартнаяОбработка = ПараметрыМетода[3];
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Исключение
|
||||
@ -99,7 +104,7 @@
|
||||
//
|
||||
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -115,6 +120,11 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -131,7 +141,7 @@
|
||||
//
|
||||
Процедура ПриЗаписи(Источник, Отказ) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -146,6 +156,10 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -154,7 +168,8 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Возникает при проведении документа.
|
||||
// Основное назначение процедуры-обработчика данного события - генерация движений по документу. Выполняется в транзакции записи.
|
||||
// Основное назначение процедуры-обработчика данного события - генерация движений по документу.
|
||||
// Выполняется в транзакции записи.
|
||||
//
|
||||
// Параметры:
|
||||
// Источник - ДокументОбъект - Объект, обрабатываемый подпиской на события.
|
||||
@ -163,7 +178,7 @@
|
||||
//
|
||||
Процедура ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -179,6 +194,10 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -187,7 +206,8 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Возникает при записи документа.
|
||||
// Основное назначение процедуры-обработчика данного события - проверка правильности заполнения значений реквизитов объекта.
|
||||
// Основное назначение процедуры-обработчика данного события -
|
||||
// проверка правильности заполнения значений реквизитов объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Источник - ДокументОбъект - Объект, обрабатываемый подпиской на события.
|
||||
@ -196,7 +216,7 @@
|
||||
//
|
||||
Процедура ОбработкаПроверкиЗаполнения(Источник, Отказ, ПроверяемыеРеквизиты) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -212,6 +232,11 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
ПроверяемыеРеквизиты = ПараметрыМетода[2];
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
|
@ -74,7 +74,7 @@
|
||||
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
|
||||
|
||||
Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
|
||||
Описание.Версия = "1.0.0.2";
|
||||
Описание.Версия = "1.0.1.2";
|
||||
|
||||
// Требуется библиотека стандартных подсистем.
|
||||
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
|
||||
|
@ -46,6 +46,8 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -81,6 +83,9 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
СтандартнаяОбработка = ПараметрыМетода[3];
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -97,7 +102,7 @@
|
||||
//
|
||||
Процедура ПередЗаписью(Источник, Отказ) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -112,6 +117,11 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Источник = ПараметрыМетода[0];
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -128,7 +138,7 @@
|
||||
//
|
||||
Процедура ПриЗаписи(Источник, Отказ) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -143,6 +153,10 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
@ -151,7 +165,8 @@
|
||||
КонецПроцедуры
|
||||
|
||||
// Возникает при записи документа.
|
||||
// Основное назначение процедуры-обработчика данного события - проверка правильности заполнения значений реквизитов объекта.
|
||||
// Основное назначение процедуры-обработчика данного события -
|
||||
// проверка правильности заполнения значений реквизитов объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Источник - ДокументОбъект - Объект, обрабатываемый подпиской на события.
|
||||
@ -160,7 +175,7 @@
|
||||
//
|
||||
Процедура ОбработкаПроверкиЗаполнения(Источник, Отказ, ПроверяемыеРеквизиты) Экспорт
|
||||
|
||||
Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
|
||||
Если Источник.ОбменДанными.Загрузка Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@ -176,6 +191,11 @@
|
||||
|
||||
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
|
||||
|
||||
Если ПараметрыМетода[1] Тогда
|
||||
Отказ = Истина;
|
||||
КонецЕсли;
|
||||
ПроверяемыеРеквизиты = ПараметрыМетода[2];
|
||||
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
|
||||
КонецПопытки;
|
||||
|
@ -57,7 +57,7 @@
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
|
||||
</DefaultRoles>
|
||||
<Vendor>Первый БИТ</Vendor>
|
||||
<Version>1.0.1.1</Version>
|
||||
<Version>1.0.1.2</Version>
|
||||
<UpdateCatalogAddress/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
||||
|
Loading…
Reference in New Issue
Block a user