← К заметкам

Заметки

Ошибка PHP в бизнес-процессе может скрыть факт запуска

Сообщение «действие выполнено» в конце PHP-кода ничего не скажет, если выполнение оборвалось раньше. Поэтому отметку входа нужно писать перед операцией, а результат — после неё.

$this->WriteToTrackingService('Начало PHP-действия');

try {
    $deal_id = (int) $this->GetRootActivity()->GetVariable('DealId');
    if ($deal_id <= 0) {
        throw new RuntimeException('Не заполнена переменная DealId.');
    }
    $this->SetVariable('CheckedDealId', $deal_id);
    $this->WriteToTrackingService('Проверка завершена');
} catch (Throwable $exception) {
    $this->WriteToTrackingService('Ошибка: ' . $exception->getMessage());
    throw $exception;
}

В шаблоне должны существовать переменные DealId и CheckedDealId. Это минимальный пример проверки значения, а не обновление CRM.

Повторный throw оставляет ошибку ошибкой. Если просто записать её в журнал и продолжить, следующие действия могут принять незаполненный результат за успешный.

Синтаксическая ошибка, мешающая начать выполнение этого блока, не обязана попасть в его catch. Для неё нужен PHP-журнал сервера.