Бизнес-процессы
Запуск бизнес-процесса из PHP
StartWorkflow для сделки: документ, параметры шаблона, ID запущенного процесса и ошибки.
PHP-примеры относятся к коробочному Bitrix24. Код для действия «PHP-код» вставляется без открывающего тега PHP; ядро и контекст действия уже доступны.
Запуск по ID шаблона
Этот фрагмент выполняется в PHP-коде коробки с подключённым ядром. Передайте ID существующих шаблона и сделки; шаблон должен относиться к документам сделок.
<?php
if (!\Bitrix\Main\Loader::includeModule('bizproc')
|| !\Bitrix\Main\Loader::includeModule('crm')
) {
throw new \RuntimeException('Нужны модули bizproc и crm');
}
$template_id = 123;
$deal_id = 456;
$errors = [];
$workflow_id = \CBPDocument::StartWorkflow(
$template_id,
['crm', 'CCrmDocumentDeal', 'DEAL_' . $deal_id],
[],
$errors
);
if ($workflow_id === '' || !$workflow_id || $errors !== []) {
throw new \RuntimeException('БП не запущен; разберите массив errors');
}Возвращённый ID подтверждает запуск экземпляра. Он не доказывает, что все действия процесса завершились успешно: процесс может ожидать пользователя, паузу или внешнее событие.
Параметры и пользователь
Третий аргумент — значения параметров, объявленных в шаблоне. Произвольный ключ TargetUser сам по себе не назначает исполнителя всех PHP-действий и не является универсальным переключателем прав.
Проверка того, кто может запустить процесс для конкретного документа, относится к вызывающему коду. Нельзя принимать ID сделки и шаблона из публичного запроса без проверки доступа.
Повторный запуск из события
Обработчик изменения сделки может сработать повторно из-за действий самого БП. Защита от рекурсии в памяти действует только в текущем PHP-запросе. Для запуска «один раз на внешнее событие» нужен устойчивый ключ события и запись о его обработке.