> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/kastomizaciya-poiska.md).

# kastomizaciya poiska

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

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

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

`"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)).

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