Добавление и удаление исполнителей в запущенном процессе с помощью доп. обработчика
Добрый день, возник вопрос:
можно ли программно с помощью доп. обработчика откорректировать список исполнителей в уже запущенном процессе?
Например, запускается процесс согласования, и в нем необходимо удалить определенного пользователя и добавить другого.
Создан доп. обработчик с подпиской на "Старт процесса" с проверкой типа процесса.
можно ли программно с помощью доп. обработчика откорректировать список исполнителей в уже запущенном процессе?
Например, запускается процесс согласования, и в нем необходимо удалить определенного пользователя и добавить другого.
Создан доп. обработчик с подпиской на "Старт процесса" с проверкой типа процесса.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Есть документ вида "Протокол совещания".
В документ добавлены несколько доп. реквизитов "Участник совещания" (1, 2, 3...).
Необходимо, чтобы в согласование автоматически попадали эти участники совещания из доп. реквизитов.
Добавила мнимого пользователя "Все участники совещания". Создала шаблон процесса согласования "Согласование с участниками совещания", где в качестве исполнителя фигурирует этот мнимый пользователь "Все участники совещания".
Хочу при старте процесса согласования с помощью доп. обработчика заменять мнимого пользователя "Все участники совещания" на сотрудников из доп. реквизитов "Участник совещания".
Есть документ вида "Протокол совещания".
В документ добавлены несколько доп. реквизитов "Участник совещания" (1, 2, 3...).
Необходимо, чтобы в согласование автоматически попадали эти участники совещания из доп. реквизитов.
Добавила мнимого пользователя "Все участники совещания". Создала шаблон процесса согласования "Согласование с участниками совещания", где в качестве исполнителя фигурирует этот мнимый пользователь "Все участники совещания".
Хочу при старте процесса согласования с помощью доп. обработчика заменять мнимого пользователя "Все участники совещания" на сотрудников из доп. реквизитов "Участник совещания".
(4)
Проверяю возможность добавить исполнителя:
Бизнес-событие не удается обработать. Ошибок в ЖР не падает.
Возможно, нужно добавлять исполнителей в ТЧ как-то по-другому?
Проверяю возможность добавить исполнителя:
БизнесПроцесс = Событие.Источник;
Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") Тогда
ТипыДокументов = Новый Массив;
ТипыДокументов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));
ВидыДокументов = Новый Массив;
ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("_Протокол совещания"));
ОсновныеПредметы = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(БизнесПроцесс, ТипыДокументов, Истина);
Для Каждого Предмет ИЗ ОсновныеПредметы Цикл
Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
Строка = БизнесПроцесс.Исполнители.Добавить();
Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию("Администратор");
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПоказатьБизнес-событие не удается обработать. Ошибок в ЖР не падает.
Возможно, нужно добавлять исполнителей в ТЧ как-то по-другому?
(5) тут надо получить вначале объект:
НО! это не поможет, так как не создана задача для "Администратора".
Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
БизнесПроцесОбъект = БизнесПроцесс.ПолучитьОбъект();
Строка = БизнесПроцесОбъект.Исполнители.Добавить();
Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию("Администратор");
БизнесПроцесОбъект.Записать();
КонецЕсли;
НО! это не поможет, так как не создана задача для "Администратора".
(17)Я бы попробывал вот так:
Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
СтарыеУчастникиПроцесса = БизнесПроцессыИЗадачиВызовСервера.ТекущиеУчастникиПроцесса(БизнесПроцесс.Ссылка);
БизнесПроцесОбъект = БизнесПроцесс.ПолучитьОбъект();
Строка = БизнесПроцесОбъект.Исполнители.Добавить();
Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию("Администратор");
БизнесПроцесОбъект.Записать();
БизнесПроцесОбъект.ИзменитьРеквизитыНевыполненныхЗадач(СтарыеУчастникиПроцесса, Новый Структура);
КонецЕсли;
Показать
Какое бизнес-событие ? При чём здесь бизнес-событие ? ГДЕ Я ???
Вешаетесь на событие БП ПередЗаписью. Там пишете:
У ТЧ Исполнители есть другие колонки, кроме, собственноЮ, Исполнитель. Их тоже надо заполнять...
Вешаетесь на событие БП ПередЗаписью. Там пишете:
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.Ссылка, "Стартован");
Если Источник.Стартован И Не Реквизиты.Стартован Тогда // старт бизнес-процесса
||||||||||||||||||||||||||||||||||||||||||| ЗАПОЛНЯЕМ
КонецЕсли;
ПоказатьУ ТЧ Исполнители есть другие колонки, кроме, собственноЮ, Исполнитель. Их тоже надо заполнять...
Всё, я тормоз. Вы пытаетесь ловить бизнес-событие и подпиской его обрабатывать. Спорное решение, ну ладно, допустим. Тогда вам нужно самой ВРУЧНУЮ добавить и исполнителей, и сгенерить для них задачи и тд, и тп - ПОЕЗД УЖЕ УШЁЛ, да догнать можно, но очень сложно.
Я предлагаю вам создать подписку на событие ПередЗаписью вашего бизнес-процесса. Да, это доработка, но она проще в разы.
Я предлагаю вам создать подписку на событие ПередЗаписью вашего бизнес-процесса. Да, это доработка, но она проще в разы.
(11) Вообще можно снять с поддержки всего один общий модуль "ШаблоныБизнесПроцессовПереопределяемый", где и прописать свою автоподстановку (он кстати для этого и предназначен). Или если позволяет версия конфигурации, то использовать Расширение.
Но насколько я понял в вашем случае это не сработает, так как там возвращается конкретное значение - роль или исполнитель, а у вас их несколько может быть.
Но насколько я понял в вашем случае это не сработает, так как там возвращается конкретное значение - роль или исполнитель, а у вас их несколько может быть.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот