|
Вложенный бизнес-процесс. Формируется лишняя задача и не завершается автоматически | ☑ | ||
---|---|---|---|---|
0
CaIIIka
17.11.21
✎
12:57
|
Здравствуйте! Не пойму логику.
Есть точка маршрута "РасходнаяНакладная" типа "Вложенный бизнес-процесс". В модуле объекта БП "ОбработкаСчета" для каждой накладной формируется вложенный бизнес процесс: Процедура РасходнаяНакладнаяПередСозданиемВложенныхБизнесПроцессов(ТочкаМаршрутаБизнесПроцесса, ФормируемыеБизнесПроцессы, Отказ) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СвязанныеДокументы.Ссылка КАК РасходнаяНакладная |ИЗ | КритерийОтбора.СвязанныеДокументы(&Счет) КАК СвязанныеДокументы |ГДЕ | СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходнаяНакл | И НЕ СвязанныеДокументы.Ссылка.Проведен"; Запрос.УстановитьПараметр("Счет", Предмет); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВедЗадача = СоздатьЗадачу(БизнесПроцессы.ОбработкаСчета.ТочкиМаршрута.РасходнаяНакладная); ВедЗадача.Записать(); БП = БизнесПроцессы.ОбработкаРасходнойНакладной.СтартБизнесПроцесса(ВыборкаДетальныеЗаписи.РасходнаяНакладная, ВедЗадача.Ссылка); Если БП <> Неопределено Тогда ФормируемыеБизнесПроцессы.Добавить(БП); Иначе ВедЗадача.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры В функции БизнесПроцессы.ОбработкаРасходнойНакладной.СтартБизнесПроцесса: БП = БизнесПроцессы.ОбработкаРасходнойНакладной.СоздатьБизнесПроцесс(); БП.ВедущаяЗадача = ВедущаяЗадачаСсылка; БП.Автор = ПараметрыСеанса.ТекущийПользователь; БП.Дата = ТекущаяДата(); БП.Состояние = Перечисления.СостоянияБизнесПроцессов.Активен; БП.Предмет = Предмет; БП.Важность = Перечисления.ВариантыВажностиЗадачи.Обычная; БП.Записать(); БП.Старт(); Возврат БП.Ссылка; На выходе из "ПередСозданиемВложенныхБизнесПроцессов" имеем задачу "РасходнаяНакладная" связанную с бизнес-процессом счета, и бизнес-процесс "ОбработкаРасходнойНакладной" для расходной накладной, у которого указана вышеуказанная ведущая задача. Затем, если в модуле объекта БП "ОбработкаСчета" не описать процедуру "РасходнаяНакладнаяПередСозданиемЗадач", то создается еще одна ПУСТАЯ задача с наименованием "РасходнаяНакладная" (по точке маршрута). Если описать процедуру "РасходнаяНакладнаяПередСозданиемЗадач" по аналогии с другими задачами, получится задача, похожая на созданную в качестве ведущей для расходной накладной. ЭТА ЗАДАЧА НЕ ВЫПОЛНЯЕТСЯ ПРИ ЗАВЕРШЕНИИ БП "ОбработкаРасходнойНакладной". МЫСЛИ: Пытаться передавать задачи, созданные в качестве ведущих в массив "ФормируемыеЗадачи" в процедуру "РасходнаяНакладнаяПередСозданиемЗадач". Но штатными средствами не получается. В "ПередСозданиемВложенныхБизнесПроцессов" имеется лишь массив "ФормируемыеБизнесПроцессы", и в этой процедуре создавались вложенные БП и ведущие задачи. В "РасходнаяНакладнаяПередСозданиемЗадач" имеется только пустой массив "ФормируемыеЗадачи" без данных о созданных ранее вложенных БП и их ведущих задач. Замкнутый круг. "Горшочек и дудочка"... ЧЯДНТ??? |
|||
1
CaIIIka
17.11.21
✎
16:54
|
Не пойму, почему точка вложенного бизнес-процесса помимо того, что создает бизнес-процессы и отдельную ведущую задачу для каждого из них, еще создает задачу для себя, как обычная желтая точка маршрута? Логически может и правильно, но эта задача не завершается при завершении вложенных БП. И вообще непонятно, как двинуть процесс дальше без участия человека. Сразу после выполнения вложенных БП деятельность человека не предусмотрена, работает автоматика. Я написал код в точке завершения вложенного БП, который проверяет, все ли ведущие задачи по этим вложенным процессам выполнены. И если да, то выполняет эту "лишнюю" задачу, принадлежащую синему квадрату. НО!!! Процесс дальше не двигается. Задачи все выполнены, новая не создается. Если руками выполнить, идет дальше как надо. Видимо, в это время если ее программно выполнить, механизм не может продвинуться дальше. Что за дебилизм?
Кто имел дело с вложенными БП? Я уже все перекопал и все найденные книги перечитал. Нигде не написано, что должна создаваться задача, привязанная прямо к точке. Задачи, связанные с вложенными БП - да. Но не к самой точке. Нафига она вообще создается? А, еще... Если в "при создании задач" для синего квадрата СтандартнуюОбработку в Ложь увести, то система сбоить начинает, выдавая ошибки. |
|||
2
CaIIIka
17.11.21
✎
16:57
|
+(1) .... СтандартнуюОбработку в Ложь увести и не создавать эту долбаную задачу ......
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |