Бизнес-процессы
Журнал и ошибки бизнес-процессов
Как отличить запуск действия от завершения, найти исключение и не записать данные карточки в журнал.
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. Прямое удаление строки из таблицы состояний не заменяет корректную остановку.