Смена ответственного у сделки (PHP-активити)

Скрипт для Bitrix24, который меняет ответственного за сделку.Основные действия:

  1. Проверяет подключение модуля CRM.
  2. Получает ID сделки и ID нового ответственного из переменных процесса (Variable2 и manager_r).
  3. Обрабатывает данные:
  • Если значение — массив, берёт первый элемент.
  • Если ID ответственного в формате user_123, извлекает числовой ID.

4. Обновляет сделку: устанавливает нового ответственного через CCrmDeal::Update().

    Используется в бизнес-процессах Bitrix24 для автоматической смены ответственного за сделку.

    if (!\Bitrix\Main\Loader::includeModule('crm')) {
        return;
    }
    
    $dealId = $this->GetVariable('Variable2');
    $newResponsibleId = $this->GetVariable('manager_r');
    
    // Если массив - берём первый элемент
    if (is_array($dealId)) {
        $dealId = reset($dealId);
    }
    if (is_array($newResponsibleId)) {
        $newResponsibleId = reset($newResponsibleId);
    }
    
    // Обработка формата user_123
    if (preg_match('/user_(\d+)/i', $newResponsibleId, $m)) {
        $newResponsibleId = $m[1];
    }
    
    $dealId = (int)$dealId;
    $newResponsibleId = (int)$newResponsibleId;
    
    if ($dealId > 0 && $newResponsibleId > 0) {
        $deal = new \CCrmDeal(false);
        $fields = ['ASSIGNED_BY_ID' => $newResponsibleId];
        $deal->Update($dealId, $fields, true, true, ['DISABLE_USER_FIELD_CHECK' => true]);
    }