В этой статье мы разберем с вами пример кода для 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 — переменная, куда мы сохраним названии сущности дубля