Можно ли, чтобы при создании бизнес-процесса в названии бизнес-процесса (по умолчанию Sale) делалась например приписка с контрагентом, например Sale (КОМПАНИЯ) вместо просто Sale, либо как добавить столбец контрагенты в списоке отображения бизнес-процессов? Имеется ввиду название контрагента с которым связана задача
Нравится
Наверное, вопрос из той же сферы:
Насколько я понял, в бизнес-процессах можно использовать параметры, в которые вводить нужную информацию. Хотелось бы узнать, каким образом ее вводить и как ее использовать (например, в фильтрах)?
Добрый день.
Спасибо за Ваш вопрос.
Для того, чтобы в реестре записей отображалась колонка с названием Контрагента, который указан в карточке задачи, Вам необходимо действовать согласно ниже приведенному алгоритму:
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