Как изменить текущий этап выполнения бизнес-процесса с помощью кода на PHP?

Как добавить PHP код в шаблон бизнес-процесса для изменения стадии как текущего, так и другого процесса на основе `documentId`? Пробовал разные варианты, вот один из них:

```php
$documentId = ['iblock','CIBlockDocument', 	
8481612];
$newStatus = 1; // Замените на ваш новый статус
$runtime = \CBPRuntime::GetRuntime(true);
$runtime->StartRuntime();
$workflow = $runtime->getWorkflow('65eacdce58a5a1.13285138', true);
$a = $workflow->SetWorkflowStatus($newStatus);
```

Однако это не срабатывает. Как исправить данную проблему и корректно реализовать необходимую функциональность?
  • 8 марта 2024 г. 9:38
Ответы на вопрос 2
Для изменения текущего этапа выполнения бизнес-процесса с помощью кода на PHP в Битрикс24, необходимо использовать специальные методы и классы, предоставляемые системой.

В вашем случае, для изменения статуса бизнес-процесса на основе `documentId`, можно воспользоваться следующим кодом:

```php
$documentId = ['iblock', 'CIBlockDocument', 8481612];
$newStatus = 1; // Замените на ваш новый статус

$documentService = \Bitrix\Main\Loader::includeModule('bizproc');

$documentType = $documentService->getDocumentType($documentId);
$documentIdString = $documentService->getDocumentIdString($documentId);

$runtime = \CBPRuntime::GetRuntime();
$documentService->startWorkflow(
    $documentType,
    null,
    $documentIdString,
    ['DOCUMENT_ID' => $documentId],
    $errors,
    '',
    $newStatus
);
```

Этот код должен корректно изменить статус бизнес-процесса. Убедитесь, что у вас подключены необходимые модули и что все переменные корректно заполнены.

Если у вас все еще возникают проблемы, рекомендуется обратиться к документации по Битрикс24 или к специалистам по Bitrix, чтобы получить дополнительную помощь и рекомендации.
В шаблоне БП, в блок php кода: 
$this->GetRootActivity()->SetWorkflowStatus(\CBPWorkflowStatus::Completed);
Похожие вопросы