Детские вопросы про бизнес процессы

Раскопки форума, к сожалению не дали ответов.

Пара простых вопросов про БП:

1. Если БП настроен запускаться автоматически на добавление записи в какой-либо раздел (допустим Документы), то как в самом процессе получить ID этой записи?

2. Если мне надо создавать задачу текущему пользователю на основе данных нового документа, я правильно понимаю, что логика примерно такая:
- получаю в параметры диаграммы ID нового документа
- выполняю Action типа "чтение/запись данных" чтобы вытащить нужные мне данные из созданного документа и передать их в параметры диаграммы
- в Action типа "задача" каким-то образом передаю данные из параметров в задачу

Нравится

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

Здравсттвуйете Фариз
1) Если вы запускаете процесс через комманду

WFStartByID(WorkflowID, ParamNames, ParamValues);

на событие DataSet, то в ней есть названия передаваемых параметров ParamNames и значения параметров ParamValues БП. Соответственно в БП передаете необходимый ID документа, с которым вы будете работать в БП.

По поводу второго вопроса. Можно сделать ApplyDatasetFilter датасета документа по ID документа и затем сделать запись необходимых данных в задачу.
Либо описанным Вами способом.

"Яворский Алексей" написал:Если вы запускаете процесс через комманду

Запуск процесса настраивал через меню Настройки -> Автоматический запуск процессов.

В таком случае где искать вызов БП? Поиск по сервисам по указанной функции ничего не дал (странно).

Фариз,
1. Если идет автозапуск процесса по настройкам из Файл - Настройки - Автоматический запуск процессов, то ID записи попадет в "неявный" параметр AutoID, а USI датасета - в парамтер AutoDatasetUSI. Вы можете их читать в процессе функцией WFGetParamValue и получать необходимые значения.
2. Если задача создается через действие процесса, то в неее уже попадают некоторые значения из "фиксированных" параметров диаграммы. Например, если у Вас на диаграмме есть параметры AccountID и ContactID, то создаваемая задача "подхватит" эти значения и подставит их в поля "Контрагент" и "Контакт". Если необходимо передавать в задачу другие поля (нестандартные), то нужно будет вносить изменения в сам скрипт действия "Задача", а именно прописывать передачу значений из параметров в задачу - изменять обработчики OnInitialize и OnExecute скрипта wa_TaskActionScript

Ок, спасибо, пробую делать так:
Задача состоит в том чтобы при создании определенного типа документа автоматом создавать задачу с определенными параметрами (например дата начала задачи будет вычислятся от даты создания документа + кол-во дней из одного поля в документе). Пока просто пробую создавать задачу сохраняя все связи.
Сам БП пока что выглядит крайне примитивно - начало, action типа "открытия окна" - конец.
В параметрах есть AutoID и AccountID.

на событие OnBeforeExecute action "открытие окна" прописал следющее:
function TaskChekPayOnBeforeExecute(ActionItem) {
var DocumentID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'AutoID');
var DocDataset = Services.GetSingleItemByUSI('ds_Document');
ApplyDatasetFilter(DocDataset, 'ID', DocumentID, true);
DocDataset.Open();
var AccountID = DocDataset('AccountID');
WFSetParamValue(ActionItem.ParentItems.ParentDiagram,'AccountID',AccountID);
Log.Write(0, AccountID);
}

Вываливается с ошибкой, причем именно при использовании AccountID в Log.Write, просто текст - выводит. В самом Action выставлено соответствие поля Контрагент параметру диаграммы AccountID - не работает (соответствие поля Документ параметру AutoID - работает).

разобрался, детская ошибка была. Спасибо )

У меня тоже есть детский вопрос: дело состоит в том что у меня было 2 задания.
проблема в первом:нужно было сделать кнопку в разделе по нажатии которой для выбранного(ных) контрагента вызывался бы БП и т.д. Сначало все работало нормально,но после того как сделал второе задание первое перестало работать((
вот код

function RunWorkflow(WorkflowUSI, Parameters) {
var WorkflowEngine = GetWorkflowEngine();
var Now = new Date().getVarDate();
var Params = System.CreateObject('TSWorkflowLibrary.WorkflowParameters');
for (Parameter in Parameters) {
WFSetParamValueDirect(Params, Parameter, Parameters[Parameter]);
}
WorkflowEngine.StartWorkflow(WorkflowUSI, Now, Params);
}

function GetWorkflowEngine() {
return Connector.Attributes('WorkflowEngine');
}

function TestOnClick(Control) {
RunWorkflow('wd_test180612', {'AccountID' : dlData.Dataset('ID')});
}

есть предположение что когда я копался в другом коде, то мог отсюда что то удалить и теперь не могу найти в чем проблема.Кста ругается на строчку WorkflowEngine.StartWorkflow(WorkflowUSI, Now, Params); с окном ошибки где пишется "Null' is null or not an object'
Я так понимаю что он не передает объект WorkflowEngine только вот не знаю как исправить.

впринципе все заработало после того как закомментировал function GetWorkflowEngine() {
return Connector.Attributes('WorkflowEngine');
}

оказалось что в новой версии ее не нужно прописывать и GetWorkflowEngine() автоматически все берет из файла scr_WorkFlowUtils который должен быть прекреплен

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