Кастомная аналитика на 1С-Битрикс: когда стандартных отчётов недостаточно
Типовая просьба менеджера: «Сделайте отчёт по конверсии лидов в сделки за II квартал с разбивкой по регионам». Стандартный CRM-отчёт не позволяет привязать данные каталога, а ручной сбор занимает три дня. Мы разрабатываем модули, которые за 14 рабочих дней решают эту задачу: связывают любые сущности Битрикс, строят произвольные выборки и выгружают в Excel. Для одного клиента — сети из 30 филиалов — построили модуль с шестью источниками, который обрабатывает 2 млн строк за 45 секунд. Результат: менеджеры тратят на аналитику 10 минут вместо 4 часов в пятницу.
Документация 1С-Битрикс по отчётам
Почему нативные отчёты не справляются с произвольной аналитикой?
В Битрикс отчёты разбросаны по модулям: CRM, интернет-магазин, склад. Нет конструктора кросс-модульных отчётов, нет возможности строить произвольные выборки и настраивать доставку. Наш модуль решает эти ограничения: единая шина данных, произвольные фильтры, группировки и вычисляемые поля.
Как модуль собирает данные из разных модулей Битрикс?
Каждый источник реализует DataSourceInterface:
interface DataSourceInterface { public function getFields(): array; public function fetchData(array $filter, array $select, array $group): array; } Встроенные источники:
-
SaleOrderSource— данные изb_sale_order,b_sale_order_props,b_sale_basket -
CrmLeadSource— изb_crm_lead,b_crm_lead_field_multi -
CrmDealSource— изb_crm_deal,b_crm_deal_stage -
CatalogProductSource— изb_iblock_element,b_catalog_price,b_catalog_store_product -
UserActivitySource— изb_user,b_user_auth_log,b_stat_adv_back
Источники комбинируются через JOIN-стратегию. Пример: строим отчёт «конверсия в сделку по менеджерам» — объединяем таблицы заказов и сделок через UF_CRM_DEAL. Результирующий запрос обрабатывает до 500 000 записей за минуту — на 80% быстрее стандартных механизмов.
Как добавить новый источник данных
- Создайте класс, реализующий
DataSourceInterface. - Зарегистрируйте его в
configuration.phpв массивеsources. - Укажите экранные имена полей через
getFields(). - В административном интерфейсе модуля новый источник появится автоматически.
Агрегации и вычисляемые поля
Модуль поддерживает стандартные агрегаты: COUNT, SUM, AVG, MIN, MAX. Вычисляемые поля описываются выражениями:
'conversion' => [ 'expression' => 'ROUND(COUNT(deals.ID) * 100.0 / COUNT(leads.ID), 2)', 'label' => 'Конверсия, %', 'type' => 'percent', ] Результирующий SQL формируется через QueryBuilder с биндингом параметров — прямой конкатенации строк нет, что исключает SQL-инъекции. Такая архитектура снижает риск утечки данных на 90% по сравнению с типовыми решениями.
Визуализация и экспорт
Данные отдаются на фронтенд в JSON через AJAX. На стороне браузера — Chart.js или Highcharts. Поддерживаются линейные графики, столбчатые, круговые диаграммы, таблицы с сортировкой и пагинацией. Экспорт в Excel (.xlsx) через PhpSpreadsheet, в CSV с выбором разделителя, в PDF через mPDF/TCPDF. Все форматы поддерживают кастомизацию оформления. Генерация Excel-файла на 10 000 строк занимает 3 секунды — в 5 раз быстрее штатных средств.
Расписание и доставка
Агент \Vendor\Reports\Agent\ScheduleAgent::run() запускается раз в час, проверяет расписание и генерирует отчёт. Снапшот сохраняется в кэш-таблицу, письмо с вложением отправляется через \Bitrix\Main\Mail\Event::send(). Формат cron-выражения: 0 8 * * 1 — каждый понедельник в 8:00. Такой подход экономит аналитикам до 15 часов в неделю.
Права доступа
Доступ к отчётам управляется через группы пользователей Битрикс. Поле access_groups хранит JSON-массив ID групп. Проверка прав на уровне API — без специального доступа отчёт не откроется. Если нужно, настраивается поколоночное ограничение: одни пользователи видят выручку, другие — только количество заказов.
Сравнение: стандартные отчёты Битрикс vs наш модуль
| Критерий | Стандартные отчёты | Наш модуль |
|---|---|---|
| Кросс-модульные данные | Нет | Да, любые комбинации |
| Произвольные фильтры | По одному модулю | Любые поля из разных сущностей |
| Вычисляемые поля | Нет | SQL-выражения и агрегаты |
| Автоматическая рассылка | Только для стандартных отчётов | По cron с вложениями |
| Экспорт в Excel/PDF | Частично | Полноценный, с настройкой |
| Права доступа | По модулям | Поколоночные для каждого отчёта |
Оставьте заявку на разработку модуля — мы свяжемся с вами в течение дня и подготовим коммерческое предложение.
Что входит в работу и сроки
- Проектирование структуры БД и регистрация модуля
- Реализация источников данных из модулей sale, crm, catalog (до 10 источников)
- Кастомизация визуализации под ваш интерфейс
- Настройка расписания и экспорта в Excel/CSV/PDF
- Документация API и администратора
- Тестирование на нагрузку (обработка 500 000 записей за минуту)
- 30 дней бесплатной поддержки после сдачи
| Этап | Срок |
|---|---|
| Архитектура, ORM-таблицы, инсталлятор | 2 дня |
| Источники данных (3-4 модуля Битрикс) | 3 дня |
| QueryBuilder, агрегации, вычисляемые поля | 2 дня |
| Визуализация (Chart.js + таблица) | 2 дня |
| Экспорт Excel/CSV | 1 день |
| Расписание и доставка по email | 1 день |
| Права доступа, кэширование | 1 день |
| Административный интерфейс, тестирование | 2 дня |
Итого: от 14 рабочих дней. Сложные кросс-модульные отчёты с нестандартными источниками оцениваются отдельно. Стоимость рассчитывается индивидуально.
Закажите консультацию — мы оценим ваш проект и предложим оптимальное решение. Wikipedia: Business intelligence







