Блог Горошко Андрея Bitrix24,PHP Получить лиды, контакты и компании с совпадающими данными crm.duplicate.findb…

Получить лиды, контакты и компании с совпадающими данными crm.duplicate.findb…

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить лиды, контакты и компании с совпадающими данными crm.duplicate.findb…». Вы узнаете экспертные методики работы с crm.duplicate.findbycomm и научитесь избегать типичных ошибок начинающих разработчиков.

Получить лиды, контакты и компании с совпадающими данными crm.duplicate.findbycomm

> Scope: crm
>
> Кто может выполнять метод: пользователь с правом на чтение элементов CRM

Метод crm.duplicate.findbycomm возвращает идентификаторы лидов, контактов и компаний, содержащих телефоны или email-адреса из заданного списка. Поиск не учитывает добавочный номер телефона.

Параметры метода

Название
тип
Описание
type
string
Тип коммуникации. Возможные значения:
— EMAIL — email-адрес
— PHONE — телефон
values
string[]
Массив email или телефонов.

Максимальное количество значений — 20

entity_type
string
Тип объекта. Возможные значения:
— LEAD — лид
— CONTACT — контакт
— COMPANY — компания

Если не задан — поиск выполняется по всем трем типам

Особенности работы метода

Если по одному объекту найдено 20 и более дублей, остальные типы не возвращаются. Например, если не указан entity_type и ожидаем дубли по всем трем объектам, но у нас в лидах 20 или более дублей, контакт и компания возвращены не будут. Если в контактах будет 20 или более дублей, мы получим дубли по лидам и контактам, а компания будет отсутствовать в выборке.

Примеры кода

  • cURL (Webhook)
    curl -X POST \
         -H "Content-Type: application/json" \
         -H "Accept: application/json" \
         -d '{"entity_type":"CONTACT","type":"PHONE","values":["8976543","11223355"]}' \
         https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.duplicate.findbycomm
  • cURL (OAuth)
    curl -X POST \
         -H "Content-Type: application/json" \
         -H "Accept: application/json" \
         -d '{"auth":"**put_access_token_here**","entity_type":"CONTACT","type":"PHONE","values":["8976543","11223355"]}' \
         https://**put_your_bitrix24_address**/rest/crm.duplicate.findbycomm
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'crm.duplicate.findbycomm',
    		{
    			entity_type: 'CONTACT',
    			type: 'PHONE',
    			values: ['8976543', '11223355']
    		}
    	);
    	
    	const result = response.getData().result;
    	if (result.error()) {
    		console.error(result.error());
    	} else {
    		console.dir(result);
    	}
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.duplicate.findbycomm',
                [
                    'entity_type' => 'CONTACT',
                    'type'        => 'PHONE',
                    'values'      => ['8976543', '11223355'],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        if ($result->error()) {
            error_log($result->error());
        } else {
            echo 'Duplicate data: ' . print_r($result->data(), true);
        }
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error finding duplicates by communication: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.duplicate.findbycomm",
        {
            entity_type: "CONTACT",
            type: "PHONE",
            values: ["8976543", "11223355"]
        },
        function(result) {
            if(result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'crm.duplicate.findbycomm',
        [
            'entity_type' => 'CONTACT',
            'type' => 'PHONE',
            'values' => ['8976543', '11223355']
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "CONTACT": [275, 2297]
    },
    "time": {
        "start": 1750684060.672785,
        "finish": 1750684060.724903,
        "duration": 0.05211806297302246,
        "processing": 0.018191099166870117,
        "date_start": "2025-06-23T16:07:40+03:00",
        "date_finish": "2025-06-23T16:07:40+03:00",
        "operating_reset_at": 1750684660,
        "operating": 0
    }
}

Возвращаемые данные

Название
тип
Описание
LEAD
integer[]
Массив идентификаторов найденных лидов
CONTACT
integer[]
Массив идентификаторов найденных контактов
COMPANY
integer[]
Массив идентификаторов найденных компаний
time
time
Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400

{
    "error": "Communication type is not defined",
    "error_description": "Parameter 'type' is required."
}

Возможные коды ошибок

КодОписаниеЗначение
403Access deniedУ пользователя нет прав на чтение элементов CRM
400Communication type is not definedНе указан обязательный параметр type
400Communication type '{type}' is not supported in current contextУказан неподдерживаемый тип коммуникации
400Communication values is not definedНе указан обязательный параметр values
  • [](./crm-entity-merge-batch)
  • [](../../../tutorials/crm/how-to-get-lists/search-by-phone-and-email)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Получить лиды, контакты и компании с совпадающими данными crm.duplicate.findb…» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Изменить отправленные сообщения imconnector.update.messagesИзменить отправленные сообщения imconnector.update.messages

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Изменить отправленные сообщения imconnector.update.messages». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Изменить

Событие при изменении набора значений для пользовательского поля списочного т…Событие при изменении набора значений для пользовательского поля списочного т…

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Событие при изменении набора значений для пользовательского поля списочного т…». Мы подготовили подробный разбор принципов

Как использовать метод SDK crm.contact.company.items.get в Битрикс24Как использовать метод SDK crm.contact.company.items.get в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.contact.company.items.get в Битрикс24», разберем