Привет! Меня зовут Дмитрий, я разработчик в компании ArtSolution24. Мы - золотой партнер Битрикс24, занимаемся внедрением облачной и коробочной версий продукта, доработками и интеграциями с другими системами.
У нас в портфолио много интересных кейсов, связанных с созданием дополнительной функциональности в Битрикс24 по запросу наших клиентов. Одну из таких историй разберу в этой статье.
Подобный запрос мы наблюдаем у многих заказчиков, но это конкретное решение выполнили для инжиниринговой компании, которая производит сложное техническое оборудование.
Заказчик пришел с запросом — дать возможность менеджерам отдела продаж быстро выяснить, работает ли кто-то в компании с конкретным клиентом или лидом, но при этом ограничить доступ к конфиденциальной информации о клиентах.
Проблема актуальна для самых разных компаний: менеджер отдела продаж получает лид или находит контакты компании, которую хочет взять в клиенты, и просто заводит данные в CRM. При этом компания уже может быть текущим клиентом, с ней может работать другой менеджер, возможно из другого отдела.
В Битрикс24 есть механизмы контроля дубликатов, но в погоне за выполнением KPI менеджеры часто игнорируют предупреждение о том, что похожая компания уже есть в CRM. А выяснить, завел ли этого клиента ранее, довольно сложно — менеджеры видят только «свои» компании, у них нет прямого пути, чтобы посмотреть всех клиентов в базе CRM.
Мы предложили следующее решение:
реализовать быстрый поиск по частичному совпадению ИНН или названия компании,
если компания найдена в CRM, предоставить информации о том, кто ведет клиента,
если у менеджера есть доступ к подробным сведениям о клиентах, дать ему возможность их просмотреть.
Технически мы реализовали приложение, работающее на сервере заказчика. У него есть очень простой интерфейс — поисковая строка, в которой можно указать один или несколько ИНН (в процессе мы решили добавить проверку по списку ИНН), либо название компании — полностью или частично.
Если что-то найдено, в ответе выводится название компании и ФИО ответственного менеджера. Доступ к поиску есть у всех, кто авторизован в системе через стандартные механизмы Битрикс24. А возможность просматривать карточки компании определяется ролью пользователя — права есть не у всех.
Как мы реализовали поиск по ИНН
С поиском по названию компании все понятно — это единственное обязательное поле в карточке, и многие менеджеры ограничиваются только им, не заполняя реквизиты.
Но в Битрикс24 ИНН хранится в отдельной сущности «Реквизиты», связанной с сущностью «Компания». Кто-то может использовать автозаполнение реквизитов по ИНН с помощью сервиса DaData, кто-то заводит кастомное поле для ИНН, кто-то не указывает их вовсе.
Мы разработали универсальный алгоритм:
// Поиск по ИНН в реквизитах
$inn = '7701234567';
$res = \Bitrix\Crm\EntityRequisite::getList([
'filter' => ['=RQ_INN' => $inn],
'select' => ['ENTITY_ID', 'ENTITY_TYPE_ID']
]);
while ($row = $res->fetch()) {
if ($row['ENTITY_TYPE_ID'] == \CCrmOwnerType::Company) {
$companyId = $row['ENTITY_ID'];
// получаем название компании и ответственного
}
}
Если ИНН не найден — дальше ищем по названию, минимальная длина строки поиска ограничена тремя символами.
Итак, если наш поиск принес результаты, мы выводим в пользователю кликабельные названия компаний. И если у него есть права доступа к такой информации, он может переходить по ссылкам в карточку клиента.
Мы встроили проверку прав на доступ к карточке с помощью штатных механизмов Битрикс24:
$CCrmCompany = new \CCrmCompany();
if ($CCrmCompany->CheckReadPermission($companyId, $currentUserId)) {
$link = "/crm/company/details/{$companyId}/";
} else {
$link = null; // скрываем ссылку
}
Это гарантирует, что:
Видят название компании и ответственного менеджера — все авторизованные пользователи.
Переходят в карточку — только те, у кого есть права по ролевой модели CRM.
Затем мы протестировали этот алгоритм на различных ролях пользователей, проверяя, корректно ли работает ролевая модель прав, финально согласовали с заказчиком правила — кто должен и кто не должен видеть карточку клиента .
В финале мы настроили интеграцию нашего приложения с интерфейсом CRM — добавили его в основное меню. С помощью CSS доработали интерфейс, теперь оно выглядит как родное, ничем не отличаясь от интерфейса Битрикс24.
Что получили в результате
Время поиска компании в CRM сократилось с 5 минут до 15-30 секунд. Сотрудники перестали дублировать информацию, а работа отдела продаж стала более четкой. Заказчик получил более полный контроль
Разработанное решение доказало: даже стандартные CRM можно адаптировать под конкретные бизнес-процессы. Для этого нужно проанализировать потребности пользователей и точечно доработать функционал с помощью максимально простых решений.