Можно ли, чтобы при создании бизнес-процесса в названии бизнес-процесса (по умолчанию Sale) делалась например приписка с контрагентом, например Sale (КОМПАНИЯ) вместо просто Sale, либо как добавить столбец контрагенты в списоке отображения бизнес-процессов? Имеется ввиду название контрагента с которым связана задача

Нравится

2 комментария

Наверное, вопрос из той же сферы:
Насколько я понял, в бизнес-процессах можно использовать параметры, в которые вводить нужную информацию. Хотелось бы узнать, каким образом ее вводить и как ее использовать (например, в фильтрах)?

Добрый день.

Спасибо за Ваш вопрос.

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

1) Открыть серсис sq_WorkflowItem, к таблице tbl_WorkflowItem присоединить (JOIN) таблицу tbl_Task по параметру tbl_Task.WorkflowItemID=tbl_WorkflowItem.ID. В запросе на выборку добавить поле из tbl_Task, которое необходимо отображать в реестре записей. Сохранить изменения в сервисе.

2) Открыть ds_WorkflowItem и добавить там необходимое поле из перечня полей добавленых в sq_WorkflowItem. Сохранить изменения в сервисе.

3) Добавить в wnd_WorkflowItemsGridArea колонку Контрагент. Сохранить изменения в сервисе.

Касательно использования параметров, во вложеном файле есть пример передачи параметров между процессами и подпроцессами.

Элемент “Подпроцесс” позволяет запустить некоторый процесс внутри другого, причём процесс, являющийся подпроцессом, в другом процессе представлен как его элемент.

Дело в том, что вызов процесса осуществляется методом StartWorkflow объекта WorkflowEngine, который, в свою очередь, является атрибутом системного объекта Connector (как Вы могли заметить это в коде функции WFStartByID). Другими словами, вызов процесса/подпроцесса осуществляется средствами ядра системы.

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

Изначально необходимо определиться со значениями, которые Вам необходимо передать, и сформировать SQL-запросы на выборку этих значений. Например, если Вам необходимо выбрать названия всех компаний, которые связаны с задачами по определенному процессу, запрос будет примерно такой:

select tbl_Account.Name from tbl_Account
 
left outer join tbl_Task on tbl_Task.AccountID = tbl_Account.ID
 
left outer join tbl_WorkflowItem on tbl_WorkflowItem.ID = tbl_Task.WorkflowItemID
 
left outer join tbl_Workflow on tbl_Workflow.ID = tbl_WorkflowItem.WorkflowID
 
where tbl_Workflow.ID = '{172E75BF-2A11-41EF-98F7-F0AB9BBC7BDA}'

Соответственно, для выбора названий всех компаний, которые связаны с задачами по подпроцессу некоторого процесса, запрос будет немножко сложнее:

select tbl_Account.Name from tbl_Account
 
left outer join tbl_Task on tbl_Task.AccountID = tbl_Account.ID
 
left outer join tbl_WorkflowItem on tbl_WorkflowItem.ID = tbl_Task.WorkflowItemID
 
left outer join tbl_Workflow on tbl_Workflow.ID = tbl_WorkflowItem.WorkflowID
 
left outer join tbl_WorkflowItem ParentItem on ParentItem.ID = tbl_Workflow.ParentSubProcessItemID
 
left outer join tbl_Workflow Parent on Parent.ID = ParentItem.WorkflowID
 
where Parent.ID = '{172E75BF-2A11-41EF-98F7-F0AB9BBC7BDA}'

Также необходимо учесть, что если Вам нужно выбрать название компании, связанной с конкретной задачей по процессу/подпроцессу, нужно добавить условие фильтрации по задачам (и учесть все другие необходимые условия для выборки).

Необходимо создать сервис (сервисы) SQL-запроса на выборку в системе Terrasoft.
По созданным запросам создать датасеты для хранения значений.
Определить событие, в результате которого параметры из родительского процесса будут подставляться в подпроцесс (например, во время события dlDataOnDatasetAfterPost даталинка задачи).

В обработчике события вставить условия проверки (например, является ли задача элементом процесса, происходит ли создание новой задачи или редактирование существующей – if (Dataset.State == dstInsert), и т.д.). Также необходимо создать переменные для ранее созданных датасетов. Вызвать ранее созданный датасет можно, например, так:

var ParentWFTaskDataset = Services.GetNewItemByUSI(<Код датасета>);
 
ParentWFTaskDataset.Open();

Работа с датасетами дальше идет по аналогии с другими обработчиками, в зависимости от конкретной цели. Например:

Dataset.Values(‘AccountID’) = ParentWFTaskDataset.Values(‘AccountID’);

Будем рады ответить на все Ваши вопросы.

Terrasoft Support Team

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