PHP-код активити проверки на дубли по пользовательскому полю

В этой статье мы разберем с вами пример кода для PHP активити (коробочный Битрикс24), который позволит нам проверять на дубли компанию или контакт при добавлении по пользовательскому полю.

 // 1. Указываем поле для проверки дублей
$fieldToCheck = 'UF_CRM_1749400867028';

// 2. Получаем значение ПОЛЯ из переменной бизнес-процесса
$sellerIDToCheck = trim($this->GetVariable('Наш_ID'));

// 3. Инициализируем результаты
$result = 'Нет'; // По умолчанию дублей нет
$duplicateLink = ''; // Ссылка на дублирующую компанию

try {
    // 4. Проверяем, что Наш_ID не пустой
    if (empty($sellerIDToCheck)) {
        throw new Exception('Наш_ID не указан');
    }

    // 5. Подключаем модуль CRM
    if (!\Bitrix\Main\Loader::includeModule('crm')) {
        throw new Exception('Модуль CRM не доступен');
    }

    // 6. Запрашиваем компании
    $dbCompanies = \CCrmCompany::GetListEx(
        ['ID' => 'DESC'],
        [
            'CHECK_PERMISSIONS' => 'N',
            $fieldToCheck => $sellerIDToCheck
        ],
        false,
        false,
        ['ID', $fieldToCheck, 'TITLE']
    );

    // 7. Проверяем результат запроса
    if (!$dbCompanies) {
        throw new Exception('Ошибка при запросе компаний');
    }

    // 8. Проверяем наличие дублей
    if ($duplicateCompany = $dbCompanies->Fetch()) {
        $result = 'Да';
        // Формируем ссылку на компанию
        $duplicateLink = 'https://' . $_SERVER['HTTP_HOST'] . '/crm/company/details/' . $duplicateCompany['ID'] . '/';
        
        // Возращаем название компании
        $duplicateTitle = $duplicateCompany['TITLE'] ?? 'Без названия';
    }

} catch (Exception $e) {
    // 9. В случае ошибки возвращаем её описание
    $result = 'Ошибка: ' . $e->getMessage();
}

// 10. Возвращаем результаты
$this->SetVariable('HasDuplicate', $result);
$this->SetVariable('DuplicateLink', $duplicateLink ?? '');
$this->SetVariable('DuplicateTitle', $duplicateTitle ?? '');

Вам нужно создать в своем БП следующие переменные:
Наш_ID
— то значение на вход, которое будем проверять
HasDuplicate — переменная для хранения результат дубля
DuplicateLink — переменная со ссылкой на дубль
DuplicateTitle — переменная, куда мы сохраним названии сущности дубля