|
Бизнес-Процесс. Как получить следующую точку маршрута? | ☑ | ||
---|---|---|---|---|
0
totparen
28.01.16
✎
20:18
|
Сабж.
Есть метод ПолучитьВходящиеТочки(), работает в том числе и для точки вида "Действие", есть метод ПолучитьИсходящиеТочки(), но помему-то работает только для точек вида "Разделение". Как можно найти исходящие точки для действия? |
|||
1
Сниф
28.01.16
✎
20:21
|
А зачем? Ведь в каждой точке есть свои обработчики.
|
|||
2
totparen
28.01.16
✎
20:22
|
Нужна зашить универсальный алгоритм в задачу. Анализировать следующую ТМ.
|
|||
3
totparen
28.01.16
✎
20:27
|
Можно конечно перебрать все точки маршрута и вычислить ПолучитьВходящиеТочки() = ТекущаяТочкаМаршрута, но это костыль.
|
|||
4
Сниф
28.01.16
✎
20:35
|
(2) То есть использовать схему нестандартным образом? Тогда можно на декорациях-стрелках и справочнике. Кажется, вы это и хотите сделать.
Если так - то перебрать все элементы схемы, узнать для которых ПолучитьВходящиеТочки()= ТекущаяТочкаМаршрута, именно так. Тупо узнать куда ведут стрелочки от текущей точки - перебрать все другие узлы. И это не костыль, это норма. Ведь вы сознательно отказываетесь от стандартного программирования бизнес-процесса. |
|||
5
totparen
28.01.16
✎
20:37
|
Что-то типа этого. Всё-равно считаю костылём.
Функция ПолучитьИсходящиеТочки(пТочкаМаршрута) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РемонтТехникиТочки.Ссылка |ИЗ | БизнесПроцесс.РемонтТехники.Точки КАК РемонтТехникиТочки"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); лРезультат = Новый Массив; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл лВходящиеТочки = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьВходящиеТочки(); Если лВходящиеТочки.Найти(пТочкаМаршрута) <> Неопределено Тогда лРезультат.Добавить(ВыборкаДетальныеЗаписи.Ссылка); КонецЕсли; КонецЦикла; Возврат лРезультат; КонецФункции |
|||
6
Сниф
28.01.16
✎
20:48
|
Как-то мне пришлось делать бизнес-процесс, где около 100 строк в табличной части - и каждая строка должна согласовываться по инстанциям отдельно от других (согласование бюджетных операций).
Для решения я оставил в схеме только Старт, Финиш, и бесконечный цикл проверки. А всю логику вынес в табличную часть "История" и модуль. И что значит "зашить универсальный алгоритм в задачу"? Если его зашить в модуле - это одно. Если вы хотите, чтобы схема бизнес-процесса редактировалась в пользовательском режиме - тогда нужно делать декорации-стрелки и, например, хранить код в справочнике. |
|||
7
Сниф
28.01.16
✎
20:59
|
(5) Вы не ответили на вопрос :) Цель - программирование бизнес-процесса в конфигураторе или пользователям дать такую возможность?
|
|||
8
totparen
28.01.16
✎
21:05
|
(7)
Цель - при открытии формы задачи, анализировать следующую точку маршрута, и если следующая ТМ вида "точка выбора" - запрашивать у пользователя вариант(результат выполнения) задачи. Что бы на следующем этапе проскочить через выбор. Как-то так. БП только осваиваю... |
|||
9
totparen
28.01.16
✎
21:06
|
+(8) Задачу могут ведь формировать разные бизнес процессы. Вот и анализировать карты маршрута для универсальности.
|
|||
10
Сниф
28.01.16
✎
22:01
|
(8) так на то она и точка выбора - запрашивать у пользователя вариант ответа. Другого назначения у точки выбора и нет.
Тогда вам можно использовать стандартный механизм. Я уже не помню (и лень поднять конфу из бекапа), но у точки выбора есть во входящих параметрах, кажется, результат выбора, или как его. Вот туда и передаете, что выбрал пользователь. И логика сама дальше по схеме бежит) Не нужно программировать - какая точка следующая. Это рисуется в схеме. |
|||
11
totparen
29.01.16
✎
07:00
|
Входящие параметры у обработчика точки выбора ТочкаВыбораВарианта и Результат. Если выбор зависит от пользователя, то мне нужно это и запросить у пользователя. Не создавать же мне дополнительный диалог, после выполнения задачи. Как это делать по правильному?
|
|||
12
cw014
29.01.16
✎
07:04
|
Есть ПолучитьИсходящуюТочку() - работает для разделения и ПолучитьИсходящиеТочки() - для всего остального
|
|||
13
totparen
29.01.16
✎
07:12
|
(12) Хм... действительно. То что нужно. Почему-то забраковал эту функция изначально. Мерси. Вот чуял что должна быть функция.
|
|||
14
totparen
29.01.16
✎
07:23
|
А как всё-таки обрабатывать выбор варианта, если он зависит от результата выполнения предыдущей точки действия?
|
|||
15
Smile 8D
29.01.16
✎
09:53
|
(14) Обычно добавляют реквизит в бизнес-процесс и присваивают ему значение (в предыдущей точке). А в обработчике выбора пишут условие на значение этого реквизита.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |