Менеджер открывает в Битрикс24 карточку лида и хочет понять, с кем имеет дело: сколько у контрагента сертификатов и деклараций, по каким техническим регламентам, какая динамика. Идти за этим в отдельную аналитическую систему он не станет — если переключение занимает больше 10 секунд, продажа пойдёт без контекста. Мы встроили аналитику прямо в карточки Лидов, Сделок и Компаний. Главное решение приняли на старте: встройка в чужом портале ломается на любом крупном обновлении Битрикса, поэтому в самой встройке логики нет, весь поиск и агрегация живут на нашем сервере. Жизнь проверила схему дважды. Когда внешний администратор случайно стёр интеграцию, виджет вернули примерно за 20 минут; когда Битрикс изменил отдачу данных и виджет слёг на всех коробках разом, починили в тот же день.
Сводка
| Отрасль | Сертификация продукции, B2B-аналитика рынка |
| Конечный клиент | «Аналитика сертификатов» |
| Формат сотрудничества | Регулярное сопровождение — серия ТЗ по виджетам и приложениям в Битрикс24 |
| Тип проекта | Виджет в карточках CRM, который показывает аналитику сертификации по контрагенту, и серверный сервис поиска под ним |
| Объём работ | Виджет в Лидах, Сделках и Компаниях; вторая версия виджета с кэшированием и мониторингом; модуль ответственности по делам; раскатка на несколько коробок Битрикс24 |
| Дата проекта | Виджет в amoCRM — 2022, перенос на Битрикс24 — с конца 2024, далее продолжается |
| Трудозатраты | больше 143 часов подтверждённых смет (133 ч виджет v1 + 10 ч модуль ответственности; объём v2 в часах не оцифрован) |
| Команда | Антон Херсун (руководитель проекта; виджет v1 делал сам), затем направление принял разработчик виджетов и парсеров — он ведёт v2 и далее |
| Технологический стек | REST API Битрикс24 · встраивание в карточки CRM · серверная часть на Laravel · поиск по шести реестрам через ClickHouse · несколько коробок |
| Сдано | Виджет в трёх разделах CRM на нескольких коробках, вторая версия виджета, модуль ответственности по делам. Обмен статусами с 1С остался на стадии предложения, продукт «Прайс» остановлен на стороне заказчика |
Постановка задачи
Клиент живёт в Битрикс24 как в основном CRM-инструменте: лиды, сделки, компании. У каждой компании-контрагента в карточке есть поле ОГРН, БИН или ИНН, и по этому идентификатору внутренняя аналитическая платформа поднимает данные: сколько у компании выданных сертификатов и деклараций, по каким реестрам, какая динамика. Менеджеру всё это нужно внутри Битрикс24, а не в отдельном окне.
История виджета началась раньше Битрикса. В 2022 году мы сделали такой же виджет для amoCRM: документы по ИНН/ОГРН прямо в карточке плюс подписка на уведомления о новых документах. Когда в 2023-м клиент решил уходить с amoCRM на Битрикс24, amoCRM-виджет отключили, а перенос на новый портал заказчик оформил отдельным ТЗ.
Дальше задачи приходили постепенно:
- октябрь 2023: концепт CRM-приложения для Битрикс24 (оценка 160–220 ч), старт несколько раз сдвигался и в итоге свернулся в более узкий виджет
- ноябрь 2024: ТЗ на виджет в Лидах, Сделках и Компаниях (133 ч)
- ноябрь 2024: предложение по обмену статусами документов с 1С, заказчик решил отложить
- август–сентябрь 2025: вторая версия виджета, «большое ТЗ»
- сентябрь 2025: модуль ответственности по делам (10 ч)
- весна 2026: предложение продукта «Система Прайс» для Битрикс24, остановлено партнёрами заказчика
Перед стартом виджета v1 заказчик передал условие партнёров: начинать при предоплате 50%, остаток после сдачи. Договорились без споров: предоплата пришла 26 декабря 2024, разработку запланировали на январь.
Что в этом сложного. Встройка живёт в чужом портале — он обновляется без вашего ведома, и у клиента таких порталов несколько. Виджет в карточке лида ломается на любом крупном обновлении Битрикса или REST API. Дважды это и случилось: один раз внешний администратор портала случайно стёр интеграцию целиком, другой раз виджет разом перестал работать на всех коробках после изменения на стороне Битрикса. Держи мы бизнес-логику внутри встройки, каждый такой случай оборачивался бы днями простоя менеджеров. Поэтому архитектуру сразу развели на два слоя: тонкая встройка отвечает только за показ страницы, вся логика поиска и агрегации работает на нашем сервере.
Как мы это сделали
1. Серверная часть у нас, виджет как тонкая встройка.
Виджет в Битрикс24 принимает информацию об открытой карточке, забирает значение поля ОГРН и шлёт запрос к нашему сервису на Laravel. Поиск по реестрам, агрегация, формирование выдачи — всё это живёт на стороне Laravel, виджет показывает уже готовую страницу. Если Битрикс24 поменяет API встроек, переделывать придётся только тонкую встройку, а не сервис.
2. Один сервис на три раздела CRM.
В основном ТЗ (133 ч) виджет встраивается в три места портала: карточку Лида, Сделки и Компании. Идентификатор контрагента в каждом случае берётся по-своему: из карточки Компании напрямую, из Сделки через связанную компанию, из Лида из собственного поля (у лидов оно своё, и лид должен быть привязан к компании). Сервису неважно, откуда пришёл идентификатор: на выходе одна и та же страница с аналитикой. Вместо трёх отдельных виджетов получился один сервис.
3. Поиск по шести реестрам через ClickHouse: 300 мс на запрос.
По одному ОГРН виджет ищет сразу в шести таблицах: сертификаты и декларации РФ, сертификаты и декларации Киргизии, реестр Казахстана и реестр Беларуси. На обычной базе при выросших объёмах такой поиск занимал секунды. Мы подключили ClickHouse, и поиск стал укладываться в диапазон от 300 мс до 1 секунды даже на самом тяжёлом российском реестре; формирование выдачи добавляет ещё пару секунд. Сотня менеджеров может искать одновременно без задержек. На случай аварии хранилища поставили переключатель: ClickHouse недоступен — виджет мгновенно откатывается на обычную базу и продолжает работать.
4. Постановка дел: подсчёт новых документов и уведомления.
Менеджер может подписать карточку контрагента на отслеживание. Каждые 2 часа система пересчитывает новые документы по подписанным ИНН и раз в 2,5 часа ставит «дела» — задачи-уведомления в соответствующие лиды, сделки и компании. Так менеджер узнаёт о новом сертификате контрагента, не открывая карточку специально.
5. Вторая версия как переосмысление, а не патч («большое ТЗ»).
К v2 подписок накопилось столько, что прежний механизм перестал справляться: 13 тысяч ИНН на отслеживании не успевали обработаться за отведённые 2 часа, и постановка дел молча отваливалась. Сначала временно растянули интервал, потом сели за полноценный пересмотр. В «большое ТЗ» вошли починка постановки дел под выросшую нагрузку, поддержка нескольких ОГРН в одной сущности, архивация подписок уволенных сотрудников, кэширование (карточка не ходит в базу повторно, если данные не менялись) и отдельный мониторинг обработки ОГРН. Втискивать всё это в мелкое обновление даже не пробовали: такие задачи всегда выходят втрое дороже по часам. Кэширование докатили ночью к 25 сентября 2025.
6. Модуль ответственности по делам отдельным ТЗ (10 ч).
Возник вопрос: на кого ставить дело-уведомление — на ответственного за сущность или на сотрудника, который подписал карточку? И что делать, если ответственного нет или система не даёт его назначить. Логику «ставим ответственному, при невозможности пользователю, на лету» вынесли в отдельный модуль на 10 часов: пусть живёт независимо от ядра виджета и настраивается как в коробке, так и в самом виджете. Выкатили 29 сентября 2025, сверху повесили статистику в мониторинге.
Результаты
| Метрика | Значение |
|---|---|
| Подтверждённые сметы | больше 143 часов (133 ч v1 + 10 ч модуль ответственности) |
| Точек встраивания в Битрикс24 | 3 (Лиды, Сделки, Компании) |
| Реестров в одном поиске | 6 (РФ серт/декл, КГ серт/декл, КЗ, Беларусь) |
| Скорость поиска после ClickHouse | 300 мс — 1 секунда вместо нескольких секунд |
| Версии виджета | v1 и v2 («большое ТЗ») |
| Коробок Битрикс24 | несколько, виджет раскатан на все |
Под тонкой встройкой в Битрикс24 живёт сервис на Laravel: бизнес-логики в самой встройке нет, она отдаёт готовую страницу. Один сервис обслуживает три раздела CRM. Поиск по шести реестрам уложился в 300 мс благодаря ClickHouse, с откатом на обычную базу при аварии. Вторая версия закрыла накопленную нагрузку на постановку дел и добавила кэширование. Модуль ответственности оформлен отдельно и настраивается на каждой коробке.
Процесс и хронология
| Этап | Период | Результат |
|---|---|---|
| Виджет в amoCRM (предшественник) | 2022 | Документы по ИНН/ОГРН + уведомления в amoCRM |
| Концепт CRM-приложения Битрикс24 | октябрь 2023 | оценка 160–220 ч, свернулся в виджет |
| Виджет v1 в трёх разделах | ноябрь 2024 → март 2025 | 133 ч, боевой запуск 3 февраля 2025, принят 12 марта 2025 |
| Обмен статусами с 1С | ноябрь 2024 | предложение, отложено заказчиком |
| Виджет v2 («большое ТЗ») | август–сентябрь 2025 | готово 25 сентября 2025 |
| Модуль ответственности по делам | сентябрь 2025 | 10 ч, выкат 29 сентября 2025 |
| Система Прайс для Битрикс24 | весна 2026 | Прототип, остановлено партнёрами заказчика |
Инциденты и реакция
Виджет в чужом портале проверяется не в спокойном режиме, а в авариях. Два случая показали, зачем логика вынесена на наш сервер.
Интеграцию стёрли — восстановили примерно за 20 минут. В августе 2025 внешний администратор портала по неосторожности удалил интеграцию виджета, заодно сбив client id и secret. От сообщения «у нас пропал виджет» до подтверждения полной работоспособности прошло около 20 минут: подняли резервную копию настроечных таблиц, поправили ключи в базе, переподключили приложение. Подписки на ОГРН при этом не слетели. По следам случая дописали в документацию короткий регламент восстановления.
Виджет упал на всех коробках сразу. В декабре 2025 Битрикс перестал отдавать данные так, как отдавал раньше, и виджет одновременно слёг на всех коробках клиента. Переустановка приложения через штатную кнопку вернула работу — оставшуюся 500-ю ошибку добили в тот же день. Причина была на стороне Битрикса и затронула все порталы разом — ровно тот класс проблем, ради которого бизнес-логику и держат вне встройки.
Что предлагали, но не делали
Честные статусы тоже часть работы. Обмен статусами документов между 1С и платформой мы оценили ещё в 2024-м, но заказчик решил отложить. Когда в 2025-м к идее вернулись уже на объёме около 107 тысяч деклараций, мы намеренно не оформляли ТЗ до теста жизнеспособности, и задача так и осталась на стадии проверки. Браузерное расширение как способ обойти ограничения Битрикса на установку приложений (показывать виджет по ИНН на любом сайте) предложили в 2024-м — идея зависла. Продукт «Система Прайс» для Битрикс24 довели до прототипа, но партнёры заказчика его не поддержали, и проект остановили на их стороне.
Команда
- Антон Херсун, Xaver Pro — руководитель проекта, проектирование контракта «виджет ↔ сервис». Виджет v1 (133 ч) делал сам. Для нас это редкий случай, когда руководитель проекта закрывает сборку руками: сперва нужно было понять механику Битрикс24 изнутри, и только потом рисовать архитектуру.
- Разработчик виджетов и парсеров — принял направление Битрикс к моменту v2 и ведёт его дальше (вторую версию и последующие доработки). Преемственность внутри направления сохраняется: задачи по виджету идут через одного и того же человека. Аналитическую панель ведёт другой разработчик, здесь своя специализация по интеграциям и парсерам.
Скриншоты и материалы
Будут добавлены отдельным проходом: скриншот виджета внутри карточки Сделки после обработки приватности конкретных компаний.
Если ваш виджет в Битрикс24 ломается на каждом обновлении портала, нам это знакомо. Покажите код и список «упало в этом релизе», ответим, что стоит вынести на сервер, чтобы обновления портала не роняли виджет. Разбор бесплатный.