Как мне обратиться к экземпляру элемента диаграммы не из самой диаграммы

Как мне обратиться к экземпляру элемента диаграммы не из самой диаграммы?

Хочу в экземпляр элемента диаграммы передать параметры и запустить этот экземпляр.

Задача такова: хочу создать элемент подбора товара из списка продуктов (датасет детали "Продукты" документа "Продажа") и чтобы на выходе этого элемента были параметры, которые бы содержали список выбранных продуктов. Далее эти параметры попадают в элемент создания документа и уже в этом элементе добавляются на деталь продуктов.

Как этот элемент я вижу должен работать:
1. В диаграмме на событие OnBeforeExecute передаю в элемент необходимые параметры для подбора (датасет детали "Продукты", название и значения поля датасета по которому будем его фильтровать и др)
2. В самом элементе на событие OnExecute прописываю прием этих параметров, создание экземпляра окна подбора с этими параметрами. IsComplete.Value = false. В окно подбора передаю WorkflowItemID.
3. В окне подбора подбираю продукты и на нажатие кнопки [ОК] закрываю окно, в виде массива получаю выбранные продукты, запускаю снова этот экземпляр элемента диаграммы на выполнение (ProcessWorkflowItem(WorkflowItemID, true);)
Здесь нужно как-то передать выбранные продукты в этот экземпляр элемента диаграммы - тут загвоздка и вопрос "Как?"
4. В OnExecute смотрю, что параметры подбора переданы, передаю их в параметры диаграммы и завершаю экземпляр элемента диаграммы (IsComplete.Value = true)

В результате: на выходе получаю список выбранных продуктов, которые хранятся в параметре диаграммы. Вот так я это вижу сейчас.

Нравится

5 комментариев

Наверное более правильно будет сделать свой сервис WorkflowAction

--------------------------------------------
Лабитек
Центр разработки приложений

"Валерий Андрусик" написал:Наверное более правильно будет сделать свой сервис WorkflowAction

Да, я это и хочу сделать. Только вопрос вот в реализации такого сервиса.

Решил сделать по другому: по аналогии как сделан элемент Workflow\Workflow Actions\Decision

Там реализован поиск окна при запуске действия БП, а само действие повторно запускается при нажатии кнопки ОК в окне выбора.

Прошу прощения, не заметил, Вы так и написали :)
Как вариант, при закрытии окна подбора можно записывать данные в спец.поле/таблицу, или же в атрибуты Connector-а, а в обработчике OnExecute их "вытаскивать"

--------------------------------------------
Лабитек
Центр разработки приложений

"Валерий Андрусик" написал:Как вариант, при закрытии окна подбора можно записывать данные в спец.поле/таблицу, или же в атрибуты Connector-а, а в обработчике OnExecute их "вытаскивать"

Спасибо, неплохой совет. У меня в мыслях такое мелькало, но что-то я посчитал такой вариант не подходящим, хотя объяснить почему не могу (интуиция?)

Показать все комментарии