Заметки
disableBizProc не отключает роботов CRM
В коде вызван disableBizProc(), а робот стадии всё равно запускается. У операций CRM это две отдельные настройки: disableBizProc() управляет запуском шаблонов БП, disableAutomation() — роботов.
Фрагмент для коробки: $ob_factory — фабрика нужного типа CRM, $ob_item — полученный через неё элемент с уже изменёнными полями.
$ob_operation = $ob_factory->getUpdateOperation($ob_item);
$ob_operation->disableAutomation();
$ob_operation->disableBizProc();
$ob_result = $ob_operation->launch();
$ar_errors = $ob_result->getErrorMessages();
if (!$ob_result->isSuccess()) {
throw new RuntimeException(implode('; ', $ar_errors));
} Здесь отключены обе категории автоматизации только для данной операции. Если требуется сохранить запуск обычных БП, уберите строку с disableBizProc().
Проверки доступа и полей остаются включёнными. Ради отключения роботов не нужно вызывать disableAllChecks() или сохранять запись напрямую через ORM: это меняет значительно больше, чем требуется.
Настройка операции не останавливает ранее запущенные процессы. Для подготовки самого элемента есть пример обновления через D7 Operation.
Документация: Операции CRM.