Использование справочника "Условия маршрутизации" для бизнес-событий в 1С Документооборот.

Часто возникает ситуация, когда нужно написать обработчик бизнес-события, в алгоритмах которого необходимо, например, использовать данные внутреннего документа (значения доп. реквизитов, обычных реквизитов и т.д.). В данной публикации я хочу поделиться своим решением данной задачи через условия маршрутизации.

1. Условие задачи.

Допустим нужно решить такую задачу:

Есть вид документа "Заявление на отпуск". У данного вида документа есть два дополнительных реквизита:

 

При изменении внутреннего документа необходимо проверять выполнение условия: Дополнительный реквизит = "Отправить уведомление на почту И Дополнительный реквизит 2 = "1" И Подразделение = "_Тестовое подразделение" И Подготовил = "Администратор". Если данное условие выполняется, тогда необходимо отправить уведомление по email. Для решения данной задачи отлично подойдет типовой вид бизнес-события "Изменение внутреннего документа". Его и будем использовать для данного примера.

2. Решение.

Задачу будем решать через дополнительный обработчик типового вида события "Изменение внутреннего документа", но для начала создадим условие маршрутизации, которое будет проверять значения реквизитов. 

Условия маршрутизации находятся в подсистеме  "Управление процессами":

Создадим новое условие в конструкторе:

Теперь создадим дополнительный обработчик бизнес-события. Создать дополнительный обработчик события можно из видов событий. Виды событий находятся в подсистеме "Настройка и администрирование":

Найдем вид события "Изменение внутреннего документа" и создадим новый дополнительный обработчик:

 

 Код дополнительного обработчика

 

//Событие.Источник - источник возникновения события, в нашей ситуации внутренний документ.

//Проверка значения дополнительного реквизита.

УсловиеМаршрутизации = Справочники.УсловияМаршрутизации.НайтиПоНаименованию("Условие маршрутизации",
Истина);

ОтправитьУведомление = РаботаСУсловиямиМаршрутизации.ПроверитьПрименимостьУсловияМаршрутизацииКОбъекту(Событие.Источник,
УсловиеМаршрутизации);

Если ОтправитьУведомление Тогда

Кому = "for1ctests2@yandex.ru";
Тема = "Обработчик бизнес-события" + " " + ТекущаяДата();
Тело = "Текст письма.";

ПараметрыОтправки = Новый Структура("Кому,Тема,Тело",
Кому,Тема,Тело);

РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты,
ПараметрыОтправки);

КонецЕсли;

 

В системе есть типовая функция "ПроверитьПрименимостьУсловияМаршрутизацииКОбъекту", которая проверяет условие маршрутизации (если условие выполняется, функция возвращает значение "Истина", иначе "Ложь"). В нашей ситуации типовыми средствами в 1 строчку кода можно выполнить проверку данного условия. Таким образом задача решена.

Данный пример выполнялся в конфигурации 1С Документооборот 8 КОРП, редакция 2.1 (2.1.14.4).

1 Comment

  1. vashkostya

    Блин, это законно вообще.)

    Автору спасибо за решение.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *