Всем привет ! Документооборот 1.4
Задача следующая: есть юзер которого нужно контролировать когда он согласовывает задачу (у которой большая сумма в Предмете) Для этого после его согласования стартовать процесс Ознакомление на другого юзера.
Как я понимаю, сделать это нужно в ПодпискеНаСобытия источником для которой является ЗадачаОбъект.ЗадачаИсполнителя
1. В коде обработчика какая то дичь ... касающаяся Комплексного БизнесПроцесса; Могу ли я полностью игнорировать эту обработку, и добавить свой код типа
Если ТипЗнч(Источник.БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") Тогда
2. Наверняка уже есть пример, как запустить программно процесс; Хотелось бы посмотреть )
// Инициирует активизацию очередных действий при завершении действия комплексного процесса
//
// Параметры:
// Источник - ссылка на ЗадачуИсполнителя
// Отказ - признак отказа от обработки события
//
Процедура ЗадачаКомплексногоПроцессаПриВыполнении(Источник, Отказ) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТочкаМаршрутаВложенныйПроцесс = БизнесПроцессы.КомплексныйПроцесс.ТочкиМаршрута.ВложенныйПроцесс;
Если ТипЗнч(Источник.БизнесПроцесс) = Тип("БизнесПроцессСсылка.КомплексныйПроцесс")
И Источник.ТочкаМаршрута = ТочкаМаршрутаВложенныйПроцесс Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДочерниеБизнесПроцессы.ДочернийПроцесс
|ИЗ
| РегистрСведений.ДочерниеБизнесПроцессы КАК ДочерниеБизнесПроцессы
|ГДЕ
| ДочерниеБизнесПроцессы.СвязующаяЗадача = &СвязующаяЗадача";
Запрос.УстановитьПараметр("СвязующаяЗадача", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая()
И ПолучитьФункциональнуюОпцию("ИспользоватьФоновуюМаршрутизациюКомплексныхПроцессов") Тогда
ВедущаяЗадачаДействия = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
ВедущаяЗадачаДействия.Дата = ТекущаяДатаСеанса();
ВедущаяЗадачаДействия.ДатаНачала = ТекущаяДатаСеанса();
ВедущаяЗадачаДействия.БизнесПроцесс = Источник.БизнесПроцесс;
ВедущаяЗадачаДействия.ТочкаМаршрута = ТочкаМаршрутаВложенныйПроцесс;
ВедущаяЗадачаДействия.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ожидание маршрутизации процесса ""%1"" после выполнения ""%2""'"),
Строка(Источник.БизнесПроцесс),
Строка(Выборка.ДочернийПроцесс));
ВедущаяЗадачаДействия.Записать();
РегистрыСведений.ОчередьМаршрутизацииКомплексныхПроцессов.ДобавитьПроцесс(
Источник.БизнесПроцесс,
Выборка.ДочернийПроцесс,
ВедущаяЗадачаДействия.Ссылка);
Иначе
НовыеПроцессы = Новый Массив();
КомплексныйПроцессОбъект = Источник.БизнесПроцесс.ПолучитьОбъект();
КомплексныйПроцессОбъект.СтартоватьНовыеДействия(
НовыеПроцессы,
ТочкаМаршрутаВложенныйПроцесс,
Истина,
Выборка.ДочернийПроцесс);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Добрый день! А в 1.4 есть дополнительные обработчики бизнес-событий? если есть, я бы сделала через них и не меняла конфу.
По поводу автоматического создания задач на ознакомления нашла статью https://its.1c.ru/db/metod8dev/content/5874/hdoc
Вот код создания задачи ознакомления при завершении процесса:
Процедура ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
...
// Если "Согласовано" и это вложенный процесс,
// то задача Ознакомления создается в обработчике ПриЗавершении,
// чтобы не препятствовать завершению процесса.
Если РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
И ЗначениеЗаполнено(ВедущаяЗадача) Тогда
БизнесПроцессВедущейЗадачи =
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВедущаяЗадача, "БизнесПроцесс");
Если ТипЗнч(БизнесПроцессВедущейЗадачи) <> Тип("БизнесПроцессСсылка.КомплексныйПроцесс") Тогда
Возврат;
КонецЕсли;
Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
ЗаполнитьЗадачуОзнакомиться(Задача);
Задача.Записать();
НоваяСтрока = РезультатыОзнакомлений.Добавить();
НоваяСтрока.НомерИтерации = НомерИтерации;
НоваяСтрока.ЗадачаИсполнителя = Задача.Ссылка;
РаботаСБизнесПроцессами.ЗаписатьПроцесс(ЭтотОбъект, "ПростаяЗапись");
КонецЕсли;
КонецПроцедуры
Почему не запустить комплексный процесс, состоящий из согласования и ознакомления? Шаблон процесса можно назначить виду документа и запретить его менять.