Настройка дедупликации данных в CRM Битрикс24
Дублирующиеся контакты, компании и сделки — хроническая болезнь любой CRM, которая живёт дольше полугода. Менеджеры создают карточки вручную, лиды падают из разных источников, импорт из Excel накладывается на существующую базу. В результате отдел продаж теряет контекст переписки, аналитика врёт, а автоматизация срабатывает дважды.
Битрикс24 предоставляет встроенный механизм дедупликации, но «из коробки» он работает только по точному совпадению полей. Чтобы он реально помогал, его нужно настроить под конкретную базу.
Как работает дедупликация в Битрикс24
Система сверяет новую запись с существующими по набору критериев совпадения: телефон, email, название компании, ИНН. Логика реализована в модуле crm через класс CCrmEntityMerger и REST-метод crm.duplicate.findbycomm.
Поиск дублей запускается:
- при ручном создании карточки — всплывает предупреждение;
- при импорте — флаг «Проверять дубликаты» в мастере импорта;
- через REST при интеграциях — метод возвращает массив потенциальных дублей до сохранения.
Настройка критериев: CRM → Настройки → Дубликаты. Здесь задаётся, по каким полям и с каким весом система считает записи совпадающими.
Настройка критериев совпадения
Ключевой момент — не включать всё подряд. Практика показывает: чем больше критериев, тем больше ложных срабатываний и тем медленнее работает проверка на больших базах (от 50k записей).
Оптимальная конфигурация для большинства B2B-компаний:
| Сущность | Поле | Приоритет |
|---|---|---|
| Контакт | Телефон (нормализованный) | Высокий |
| Контакт | Высокий | |
| Компания | ИНН | Критический |
| Компания | Название | Средний (fuzzy) |
| Сделка | Название + компания | Низкий |
Нормализация телефона критична: +7 (495) 123-45-67 и 84951234567 — один номер. Битрикс нормализует телефоны автоматически через CPhoneNumber::Normalize(), но только если тип поля задан как «Телефон», а не произвольный текст.
Массовая проверка существующей базы
После включения дедупликации существующие дубли никуда не денутся — система проверяет только новые записи. Для разовой чистки используйте встроенный инструмент: CRM → Контакты → ещё → Найти дубликаты.
Для баз свыше 100k записей встроенный инструмент тормозит. Разумнее сделать выборку через REST и обработать батчами:
// Поиск дублей по email через REST API
$result = CRest::call('crm.duplicate.findbycomm', [
'type' => 'EMAIL',
'values' => ['[email protected]'],
'entity_type' => 'CONTACT',
]);
// Возвращает массив ID потенциальных дублей
Типичный цикл чистки: выгрузить все контакты с email → сгруппировать по нормализованному email → для каждой группы из 2+ записей запустить crm.merge с определёнными правилами приоритета полей.
Автоматическое объединение через REST
Если процесс повторяется регулярно (например, каждую ночь после импорта лидов), автоматизируйте его агентом Битрикса или внешним cron-скриптом:
// crm.merge — объединение двух контактов
CRest::call('crm.contact.merge', [
'id' => 1001, // главная запись (сохраняется)
'victims'=> [1002, 1003], // поглощаемые записи
]);
Перед запуском объединения обязательно определите правило выбора «главной» записи: обычно это запись с большим количеством активностей или более ранней датой создания.
Типичные проблемы и их решение
Ложные дубли по имени компании. «ООО Ромашка» и «Ромашка ООО» — Битрикс считает разными. Подключите нормализацию через хук OnBeforeCRMCompanyAdd с очисткой юридической формы из названия.
Дубли из разных источников лидов. Если один клиент оставил заявку на сайте и позвонил по телефону — два лида с разным набором данных. Настройте объединение лидов в контакт через бизнес-процесс с проверкой дублей на этапе конвертации.
Производительность на больших базах. Индексы таблиц b_crm_contact и b_crm_company по полям PHONE и EMAIL — обязательны. Проверьте их наличие в БД, особенно после миграций.
Дедупликация — не разовая акция, а регулярный процесс. Настройте еженедельный отчёт по количеству потенциальных дублей и держите метрику под контролем.







