← К документации

Бизнес-процессы

Журнал и ошибки бизнес-процессов

Как отличить запуск действия от завершения, найти исключение и не записать данные карточки в журнал.

PHP-примеры относятся к коробочному Bitrix24. Код для действия «PHP-код» вставляется без открывающего тега PHP; ядро и контекст действия уже доступны.

Контрольная точка в журнале

$this->WriteToTrackingService(
    'Начат расчёт значения',
    0,
    \CBPTrackingType::Report
);

Такая запись относится к текущему экземпляру БП. Отмечайте конкретный этап, а не «всё выполнено» до операции сохранения. Значения телефона, email, токены и полный документ для контрольной точки не нужны.

Ошибка во время исполнения

try {
    $source_text = (string) $this->GetVariable('source_text');
    $this->SetVariable('result_text', trim($source_text));
} catch (\Throwable $exception) {
    $this->WriteToTrackingService(
        'Ошибка обработки строки: ' . get_class($exception),
        0,
        \CBPTrackingType::Error
    );
    throw $exception;
}

После записи исключение пробрасывается дальше: процесс не должен молча продолжаться с нерассчитанным результатом. Полный текст исключения иногда содержит SQL или значения полей; его место — закрытый серверный журнал с ограниченным доступом.

Если в журнале нет даже первой строки

Проверьте, дошёл ли процесс до действия. Затем проверьте синтаксис PHP-блока и серверный журнал PHP. Ошибка компиляции блока возникает до первой записи внутри него; try в самом некомпилируемом фрагменте её не исправляет.

Для циклов отдельно проверьте повторное объявление функций. См. PHP-код в БП.

Остановка экземпляра

Останавливайте нужный экземпляр по его workflow ID средствами журнала или API, сверив документ и причину остановки. Завершение процесса не откатывает уже созданные задачи, письма и изменения CRM. Прямое удаление строки из таблицы состояний не заменяет корректную остановку.