Получение запущенных БП по документу
CBPStateService::GetDocumentStates(['lists', 'BizprocDocument', 14377]);
/*
Array
(
[67652a8fb94129.83810567] => Array
(
[ID] => 67652a8fb94129.83810567
[TEMPLATE_ID] => 347
[TEMPLATE_NAME] => "Название шаблона БП"
[TEMPLATE_DESCRIPTION] =>
[STATE_MODIFIED] => 20.12.2024 12:01:41
[STATE_NAME] => A58693_6039_16951_65868
[STATE_TITLE] => "Название текущего статуса БП"
[STATE_PARAMETERS] => Array()
[WORKFLOW_STATUS] => 3
[STATE_PERMISSIONS] => Array()
[DOCUMENT_ID] => Array
(
[0] => lists
[1] => BizprocDocument
[2] => 14377
)
[STARTED] => 2024-12-20 11:27:59
[STARTED_BY] => 534
[STARTED_FORMATTED] => 20.12.2024 11:27:59
)
)
*/
Получение названия статуса БП по коду статуса
$statusId = 2; // CBPWorkflowStatus::Completed;
$status = CBPWorkflowStatus::Out($statusId);
// $status = 'Completed'
Получение задачи БП
$arFields = CBPTaskService::GetList([], [
'DOCUMENT_ID' => $documentId, // по ID документа
'WORKFLOW_ID' => $wfId, // по ID воркфлоу
'STATUS' => CBPWorkflowStatus::Created // по статусу задачи бп - текущая задача
], false, false, ['*'])->fetch();
/*
Array
(
[ID] => 40408
[WORKFLOW_ID] => 67652a8fb94129.83810567
[ACTIVITY] => RequestInformationActivityModifiedNew
[ACTIVITY_NAME] => A77512_47465_34790_43971
[MODIFIED] => 20.12.2024 12:01:41
[CREATED_DATE] => 20.12.2024 12:01:41
[OVERDUE_DATE] =>
[NAME] => 'Название активити'
[DESCRIPTION] => 'Описание активити'
[PARAMETERS] => Array
(
[0] =>
[DOCUMENT_ID] => Array
(
[0] => lists
[1] => BizprocDocument
[2] => 14377
)
[DOCUMENT_URL] => /bizproc/processes/?livefeed=y&list_id=74&element_id=14377
[DOCUMENT_TYPE] => Array
(
[0] => lists
[1] => BizprocDocument
[2] => iblock_74
)
[FIELD_TYPES] => Array() // описание типов полей
[REQUEST] => Array() // поля и текущие значения
[TaskButtonMessage] => Сохранить
[CommentLabelMessage] => Комментарий
[ShowComment] => N
[CommentRequired] => N
[AccessControl] => Y
)
[IS_INLINE] => N
[DELEGATION_TYPE] => 0
[STATUS] => 0
[DOCUMENT_NAME] => "Название документа"
[USER_ID] => 534
[USER_STATUS] => 0
[WORKFLOW_TEMPLATE_ID] => 347
[MODULE_ID] => lists
[ENTITY] => BizprocDocument
[DOCUMENT_ID] => 14377
[WORKFLOW_TEMPLATE_NAME] => "Название шаблона БП"
[WORKFLOW_TEMPLATE_TEMPLATE_ID] => 347
[WORKFLOW_STATE] => "Текст текущего статуса вркфлоу"
[WORKFLOW_STARTED] => 20.12.2024 11:27:59
[WORKFLOW_STARTED_BY] => 534
)
*/
Обновление значения полей в задаче БП
foreach ($arFields['PARAMETERS']['REQUEST'] as $key => $arParam) {
if ($arParam['Name'] == 'FIELD_CODE') {
$arFields['PARAMETERS']['REQUEST'][$key]['Default'] = 'Новое значение';
break;
}
}
CBPTaskService::update($arFields['ID'], $arFields);
Получене/изменение значения переменной БП
$workflowId = $arFields['WORKFLOW_ID'];
$workflow = CBPRuntime::GetRuntime()->GetWorkflow($workflowId, true);
$rootActivity = $workflow->getActivityByName('Template');
// Текущее значение переменной
$variable = $rootActivity->GetVariable('FIELD_CODE');
// Новое значение переменной
$rootActivity->SetVariable('FIELD_CODE', 'Новое значение');
CBPWorkflowPersister::GetPersister()->SaveWorkflow($rootActivity, true);
Получение шаблонов БП по ID инфоблока (списка)
$iblockId = 13;
$arWorkflowTemplates = CBPDocument::GetWorkflowTemplatesForDocumentType(['lists', 'BizprocDocument', 'iblock_' . $iblockId]);
Запуск БП по шаблону, у которого стоит автозапуск при добавлении
$documentId = 123;
global $arErrors;
foreach ($arWorkflowTemplates as $arTemplate) {
if ($arTemplate['AUTO_EXECUTE'] == 1) {
$id = CBPDocument::StartWorkflow($arTemplate['ID'], ["lists", "BizprocDocument", $documentId], [], $arErrors);
}
}