Каталог решений - Блокировка повторного запуска комплексного процесса по документу в 1С: Документооборот

Блокировка повторного запуска комплексного процесса по документу в 1С: Документооборот

Блокировка повторного запуска комплексного процесса по документу в 1С: Документооборот

В наличии

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

Категория:

Описание

В 1С: Документообороте из коробки нет возможности ограничить повторный запуск комплексного процесса по определенному шаблону если таковой уже запущен у данного документа. в итоге можно запускать один и тот же процесс сколько угодно раз.

Чтобы этого избежать, нужно создать подписку на событие 

Далее добавить код для процедуры обработчика:

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

Проверено на релизе 1С:Предприятие 8.3 (8.3.16.1659)

Версия: редакция 2.1 (2.1.12.2)

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