# Кастомизация поиска

**Начиная с версии 2.15.0 поиск сущности не осуществляется (теперь Битрикс сам создает сущность, если нужно), поэтому данная кастомизация УДАЛЕНА.**

В начале звонка из телефонии на модуль интеграции поступает номер телефона. С этим номером модуль делает запрос в Битрикс24 для поиска сущности, к которой нужно прикрепить данный звонок. И далее работает с этой сущностью.

Начиная с версии 2.8.52 модуля появилась возможность сделать фильтр по этим сущностям, чтобы ограничить поиск.

### Обычная схема поиска:

1. Выполняем поиск сущностей по номеру;
2. Получаем поля для трёх найденных сущностей (контакта, компании, лида) и берём первую валидную. Пример: по номеру нашлись 2 лида с ID 123 и 456. При получении полей лида 123 произошла ошибка. Лид 456 получить удалось, поэтому используем его.

### Кастомная схема поиска:

1. Выполняем поиск дубликатов по номеру;
2. Выполняем поиск сущности, используя фильтр по полям, полученный в кастомизаторе. ID, полученные на шаге 1 используем, если не указаны иные. Пример: нашли 3 лида с ID 123, 456 и 789. Хотим использовать лиды только определённого статуса, например STATUS\_ID = "Some\_Status". Указываем эти параметры в кастомизаторе и выполняем поиск с использованием фильтра. В результате берём лид с подходящим статусом.

При поиске используется API метод **crm.#entity#.list** (например, [для лидов](https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_list.php)). Данные в кастомизаторе подставляются в параметр filter.

#### Для изменения поиска нужно:

1. [Включить кастомизатор](/custom_common/vklyuchenie-kastomizatora.md);
2. Поставить опцию "Кастомизировать параметры поиска" в конфиге. В файле **/opt/bx24asterisk/custom/process\_search\_params.php** кастомизатора нужно составить фильтр для поиска и передать его. Если папки /opt/bx24asterisk/custom нет, редактируем файл **/opt/bx24asterisk/customizer.php**, после строки **case 'process\_search\_params'**:

Подробно параметры [описаны в статье.](/custom_bx.md)

Вид параметров:

`"filter": {`\
`"company": {"ID":"123", "NAME":"noname"},// фильтр для поиска по компаниям`\
`"contact": {"LAST_NAME":"Ivanoff"}, // фильтр для поиска по контактам`\
`"lead": {"STATUS_ID": "bad"} // фильтр для поиска по лидам`\
`}`

Если один из массивов пуст, то поиск по такому виду сущности не выполняется.

**Описание полей, которые можно использовать:**

1. [Поля лида](https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_fields.php);
2. [Поля контакта](https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_fields.php);
3. [Поля компании](https://dev.1c-bitrix.ru/rest_help/crm/company/crm_company_fields.php).

### Примеры:

Регистрируем звонки только на лиды, которые НЕ являются новыми

```
$filter = array(
    'lead' => array(
        '!STATUS_ID'=> 'NEW'
    )
);
$params["filter"] = $filter;

return array(
    'state' => 'success',
    'data' => $params
);
```

Эта кастомизация позволяет решить множество различных задач, например:

1. Сами создаём сущность и заставляем работать с ней;
2. Поиск среди несконвертированных лидов с суммой больше нуля ([Параметры](https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_list.php));
3. Поиск среди контактов с непустым именем/связанной компанией/сделкой и т.д.;
4. Поиск среди контактов определённого типа – клиент, кандидат на должность ([Параметры](https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_list.php)).

Все случаи, фильтры можно соединять, перемешивать. Лид менять на контакт и наоборот.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/custom_bx/custom-before-2.15/kastomizaciya-poiska.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
