Поиск сделки в Битрикс24: PHP-скрипт для бизнес-процессов

В Битрикс24 часто работают с несколькими сделками в CRM одновременно. Данные дублируются, а связь между ними держится на людях: менеджер вручную ищет сделку, сверяет данные — и только потом продолжает работу.

Это медленно, может произойти ошибка и плохо масштабируется. Один неверный ID — и заявка уходит не в ту воронку, не тому ответственному, с неверными данными.

Решение — короткий PHP-код в активити «PHP-код» бизнес-процесса: по трём параметрам автоматически находит нужную сделку и сохраняет её ID в переменную `FoundDealId` для дальнейших шагов автоматизации.

// Коды полей СДЕЛКИ
$dealFieldSellerId    = 'UF_CRM_.....';   // Поле 1
$dealFieldCategory    = 'UF_CRM_.....';   // Поле 2 (тип CRM)
$dealFieldDirection   = 'CATEGORY_ID';         // Направление (системное)

// Значения для поиска
$variable1         = $this->GetVariable('Ваша_переменная1');
$variable2  = $this->GetVariable('Ваша_переменная2');
$directionId      = 0; // ID направления сделки — подставьте цифру

$resultVariable = 'FoundDealId';

if (!\Bitrix\Main\Loader::includeModule('crm')) {
    $this->WriteToTrackingService('Ошибка: модуль CRM не подключён');
    return;
}

$filter = ['CHECK_PERMISSIONS' => 'N'];

if ($variable1 !== '' && $variable1 !== null) {
    $filter[$dealFieldVariable1] = $variable1;
}
if ($variable2 !== '' && $variable2 !== null) {
    $filter[$dealFieldVariable2] = $variable2;
}
if ((int)$directionId > 0) {
    $filter[$dealFieldDirection] = (int)$directionId;
}

$foundId = 0;
$res = \CCrmDeal::GetListEx(['ID' => 'DESC'], $filter, false, ['nTopCount' => 1], ['ID']);
if ($row = $res->Fetch()) {
    $foundId = (int)$row['ID'];
}

$this->SetVariable($resultVariable, $foundId > 0 ? $foundId : null);
$this->WriteToTrackingService($foundId > 0 ? 'Найдена сделка ID=' . $foundId : 'Сделка не найдена');

Преимущества решения

1. Быстрое внедрение

Не нужно разрабатывать и публиковать приложение в Маркетплейсе. Код копируется в шаблон бизнес-процесса и работает сразу — на коробочной версии Битрикс24.

2. Гибкая настройка под бизнес

Коды полей, имена переменных и ID направления меняются в нескольких строках. Скрипт легко адаптировать под другую воронку, другие UF-поля или другой смарт-процесс.

3. Точная привязка «один к одному»

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

4. Прозрачность для администратора

Скрипт пишет в журнал БП, какие значения использовались при поиске. Если что-то пошло не так — не нужно гадать, достаточно открыть историю процесса.

5. Основа для дальнейшей автоматизации

После получения `FoundDealId` можно без участия человека:

— обновить поля сделки;

— сменить стадию;

— создать задачу ответственному;

— запустить вложенный бизнес-процесс;

— отправить уведомление.

6. Экономия на разработке

Вместо кастомного модуля или интеграции — готовый рабочий блок, который решает конкретную задачу «найти и связать». Для многих компаний этого достаточно на годы.