Каталог решений - Детектор завершения согласования для 1С: Документооборот КОРП

Детектор завершения согласования для 1С: Документооборот КОРП

Детектор завершения согласования для 1С: Документооборот КОРП

В наличии

Детектор, обнаруживающий завершение согласования и создающий соответствующее бизнес-событие, на которое можно настроить обработчик или автозапуск процесса.

Категория:

Описание

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

Чтобы не дорабатывать конфигурацию, просто добавил новый детектор бизнес-события (Настройка и администрирование — Детекторы)

Детектор обнаруживает завершения процесса согласования в пределах последних 10 минут, по которому есть основной предмет, еще не обработанного этим детектором. Генерирует бизнес-событие с указанным видом в стандартном регистре 1С: Документооборот.

Детекторы по умолчанию выполняются фоновым заданием примерно раз в минуту, сильно грузить систему обработчик не должен.

В дальнейшем можно либо добавить обработчик события в самом детекторе, либо настроить автозапуск процесса по событию стандартными средствами (Управление процессами — Правила автозапуска процессов).

Внешний вид детектора:

 

Текст детектора:

Результат = Ложь;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ПроизошедшиеБизнесСобытия.Источник КАК Источник,
               |    СогласованиеПредметы.Предмет КАК ОсновнойПредмет
               |ПОМЕСТИТЬ ВТ_ЗавершенныеСогласования
               |ИЗ
               |    РегистрСведений.ПроизошедшиеБизнесСобытия КАК ПроизошедшиеБизнесСобытия
               |        ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Согласование.Предметы КАК СогласованиеПредметы
               |        ПО ПроизошедшиеБизнесСобытия.Источник = СогласованиеПредметы.Ссылка
               |ГДЕ
               |    ПроизошедшиеБизнесСобытия.ВидСобытия = ЗНАЧЕНИЕ(Справочник.ВидыБизнесСобытий.ЗавершениеБизнесПроцесса)
               |    И ПроизошедшиеБизнесСобытия.Источник ССЫЛКА БизнесПроцесс.Согласование
               |    И ПроизошедшиеБизнесСобытия.ВидСобытия = ЗНАЧЕНИЕ(Справочник.ВидыБизнесСобытий.ЗавершениеБизнесПроцесса)
               |    И ПроизошедшиеБизнесСобытия.Период >= &Период
               |    И СогласованиеПредметы.РольПредмета = ЗНАЧЕНИЕ(Перечисление.РолиПредметов.Основной)
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    ПроизошедшиеБизнесСобытия.Источник КАК Источник
               |ПОМЕСТИТЬ ВТ_УжеДетектированные
               |ИЗ
               |    РегистрСведений.ПроизошедшиеБизнесСобытия КАК ПроизошедшиеБизнесСобытия
               |ГДЕ
               |    ПроизошедшиеБизнесСобытия.ВидСобытия = &ВидСобытияЗавершениеСогласования
//               |    И ПроизошедшиеБизнесСобытия.Источник ССЫЛКА Справочник.ВнутренниеДокументы //тут можно раскомментить, чтобы выбирались только внутренние документы, во избежание ошибок адресации (см попытку ниже)
               |    И ПроизошедшиеБизнесСобытия.Период >= &Период
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    ВТ_ЗавершенныеСогласования.Источник КАК Источник,
               |    ВТ_ЗавершенныеСогласования.ОсновнойПредмет КАК ОсновнойПредмет
               |ИЗ
               |    ВТ_ЗавершенныеСогласования КАК ВТ_ЗавершенныеСогласования
               |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УжеДетектированные КАК ВТ_УжеДетектированные
               |        ПО ВТ_ЗавершенныеСогласования.ОсновнойПредмет = ВТ_УжеДетектированные.Источник
               |ГДЕ
               |    ВТ_УжеДетектированные.Источник ЕСТЬ NULL";

Запрос.УстановитьПараметр("Период", ТекущаяДата() - 600);
Запрос.УстановитьПараметр("ВидСобытияЗавершениеСогласования", Справочники.ВидыБизнесСобытий.ПолучитьСсылку(новый УникальныйИдентификатор("4dec49cd-2226-11ea-bbd5-00265552556a"))); //Вид события, которое будет создавать детектор, нужно указать ссылку на элемент справочника, я сделал поиск по ГУИД во избежание проблем при переименовании
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
        Попытка
            ПараметрыВозврата = Новый Структура;
            ПараметрыВозврата.Вставить("Источник", Выборка.ОсновнойПредмет);
            ПараметрыВозврата.Вставить("Автор", Выборка.ОсновнойПредмет.Ответственный);
            Результат = Истина;
        Исключение
        //здесь нужен код для обработки ошибок адресации, но в целом пока и так работает
        КонецПопытки;
КонецЕсли;

 

has been added to your cart:
Оформление заказа