Модуль для устранения дублей контактов в Б24
Привет! Я CEO Webest Дмитрий Чистяков. Одно из направлений деятельности нашего агентства — внедрение, кастомизация CRM-систем и их интеграция со сторонними сервисами и продуктами. В статье речь пойдет о нашей недавней разработке — модуле контроля дубликатов в Б24.
Рассмотрим использование модуля на примере Автоцентра «Прагматика». Ранее мы уже проводили для компании миграцию из облачного «Битрикс24» на «1С-Битрикс24»: Энтерпрайз. Произвести примитивную интеграцию SQL баз с облачным порталом «Битрикс24» и импортировали в CRM-систему существующую клиентскую базу. Подробнее об этом читайте в кейсе. Кейс также размещен на сайте партнеров Битрикс24.
Предпосылки создания модуля
В базах контрагентов у крупных компаний, как правило, количество карточек контрагентов доходит до нескольких сотен тысяч.
Отсюда практически у всех компаний есть потребность время от времени производить процедуру дедупликации (избавления от дубликатов данных) клиентской базы. Дубликаты в базе могли появиться по разным причинам и разными способами. Но цель одна — максимально быстро, качественно и безболезненно избавиться от дублирующих копий и сделать клиентскую базу максимально «чистой».
- В нашей практике мы очень часто от клиентов получали такой запрос, но решения не было.
Да, в штатном функционале Битрикс24 есть возможность объединять дубликаты контрагентов (подробное описание предоставлено по ссылке — https://helpdesk.bitrix24.ru/open/10649014/), но данный функционал учитывает далеко не все сценарии и потребности клиентов.
В связи с этим мы разработали модуль поиска и объединения дубликатов для коробочных порталов Битрикс24. Модуль включает в себя следующие возможности, которых нет в штатном функционале Б24:
- Поиск дубликатов клиентов [контактов] на портале по абсолютно любым комбинациям реквизитов, как штатным [системным], так и пользовательским полям;
- Объединение дубликатов клиентов с возможностью оставить на портале карточку «оригинала» с минимальным (первым по дате создания) или максимальным ID (последним по дате создания);
- После объединения дубликатов на портале в карточку «оригинала» передаются все связанные объекты, такие как: лиды, компании, сделки, смарт-процессы, универсальные списки, дела;
- Передача/выгрузка данных о результатах дедупликации в сторонние сервисы; Это даёт возможность производить процедуру дедупликации контрагентов в сервисах, с которыми настроен обмен данными, например с 1С.
- Быстрый поиск и объединение дубликатов по клиентской базе, которая измеряется сотнями тысяч контрагентов.
Особенности модуля
Отмечу сразу, что:
- На момент публикации модуль позволяет искать и объединять сущности дубликатов только для «Контактов». В дальнейшем по мере необходимости будет реализован аналогичный функционал и для «Компаний»;
- Умышленно не реализована возможность объединения/переноса данных из штатных /пользовательских реквизитов, так как дубликаты практически всегда содержат одни и те же значения пользовательских полей в карточках.
Концепция модуля заточена под сценарий, когда необходимо найти дубликаты, произвести их объединение и перенести все связанные объекты, но при этом обогащение карточек оригиналов пользовательскими полями не требуется. Это обстоятельство обусловлено запросами от клиентов. В большинстве случаев достаточно только произвести объединение и перенести все связанные объекты.
Основные настройки модуля

Раздел «Основные настройки» включает в себя следующее:
- ID пользователя, от которого будет проходить объединение. Необходимо указать ID пользователя на портале, который будет проводить удаление карточек дубликатов, а также перепривязывать связанные объекты при объединении. То есть здесь необходимо указать ID того пользователя, у которого есть права администратора для удаления карточек контактов на портале.
- Выбираем, какую сущность оставляем на портале. То есть необходимо указать, какая карточка после процедуры объединения будет оставлена на портале — с максимальным ID или наоборот с минимальным.
- Сущности (справочники), которые будут переданы в карточку. Необходимо выбрать, какие сущности (объекты) будут перенесены в карточку «оригинала». При этом все связанные «дела» в карточку «оригинала» будут переданы по умолчанию.
- Настройки подключения к базе данных. Указываем доступы к внешней базе данных для синхронизации изменений на портале.
Поиск дубликатов
В разделе «CRM контакты» задаем параметры для поиска дубликатов на портале.
В настройках отбора/поиска можно задать фактически любые комбинации по условию поиска: и по типу пользовательского поля/реквизита: Приведу несколько простых примеров (комбинаций), по которым можно получить результаты по проверке дубликатов на портале: В процессе запуска задания на поиск дубликатов также создается одиночный агент, который автоматически самоудаляется в конце операции. Агент осуществляет функцию блокировки запуска поиска либо объединения дубликатов для предотвращения наслаивания процессов. Функции агента: Мониторинг производительности: таблица b_crm_duplicates: В данной таблице фиксируется: В случае необходимости можно визуально сравнить/проверить отработку поиска дубликатов, а также экспортировать результаты в таблицу excel. Для удобства отображения прогресса на странице поиска дубликатов используется специальный компонент, который обращается к таблицам и агентам, чтобы 1) определить, запущена ли какая-то из операций, 2) либо чтобы отобразить прогресс в режиме реального времени. Результат поиска дубликатов выглядит следующим образом: При нажатии на кнопку «Запустить объединение дубликатов» мы проверяем существование специального агента для объединения на портале. То есть агент создается только один раз, а далее он просто деактивируется на время поиска либо паузы операций. Следует отметить, что при запуске агента, процесс запускается только для одного родителя. При этом агент запускается каждые 10 секунд. По нашим наблюдениям, данный временной интервал является оптимальным для того, чтобы успеть удалить карточки всех дубликатов, а также перенести все связанные сущности в карточку основного контакта. Результаты объединения можно посмотреть в отдельной таблице базы данных b_crm_duplicates_saved В данной таблице фиксируется: В случае необходимости можно из публичной части портала найти данного контрагента в клиентской базе и убедиться в корректности отработки процедуры объединения дубликатов. Также данные из таблицы можно экспортировать в excel. В рамках данного решения заложен функционал, который предоставляет возможность передавать/выгружать данные о результатах произведенной дедупликации в сторонние сервисы. Для понимания приведем пример из практики: Реализовали нужное решение, которое подойдет многим, кто использует коробочную версию Битрикс24, хочет быстро провести дедупликацию контактов и перенести все связанные сущности в карточку основного контакта. Обращайтесь к нам: с удовольствием проконсультируем, обсудим детали и адаптируем/доработаем функционал решения под потребности вашего проекта. Оставить заявку можно на нашем сайте. Другие статьи по теме: Больше наших кейсов, статей, практических рекомендаций для предпринимателей и маркетологов про разработку, маркетинг, аналитику, дизайн на нашем сайте: https://webest.ru/ ❤


Как происходит процесс поиска дубликатов



Отображение прогресса


Объединение дубликатов



Результаты объединения

Обмен с внешними сервисами

Использование модуля
