Стандартная административная панель Битрикс показывает технические метрики — нагрузку, ошибки, состояние модулей. Бизнес-KPI там нет: выручку за сегодня, конверсию воронки, средний чек по менеджерам смотрят в отдельных системах или вовсе в Excel. Дашборд с бизнес-метриками, встроенный прямо в Битрикс, убирает этот разрыв. Мы разрабатываем такие дашборды под ключ: от SQL-запросов до визуализации в админке или публичной странице.
Какие KPI реально нужны бизнесу?
Часто руководители просят «все метрики», но реальная польза — в 5–6 ключевых показателях. Интернет-магазину нужны выручка, конверсия, средний чек, топ товаров. Оптовому дистрибьютору — дебиторка, просрочка, загрузка менеджеров. Мы помогаем выделить именно те KPI, которые влияют на принятие решений.
Почему стандартные отчёты Битрикс не подходят?
Штатные отчёты — это срезы на момент запроса, без динамики и сравнения периодов. Нет единого окна: выручку смотрят в 1С, конверсию — в Метрике, загрузку — в Управлении персоналом. Дашборд объединяет эти данные в одном интерфейсе, экономя 2–3 часа в день на сводку.
Архитектура дашборда
Дашборд реализуется как отдельная страница в административной части: /bitrix/admin/kpi_dashboard.php. Либо как публичная страница в закрытом разделе — для доступа менеджеров без права на /bitrix/admin/.
Данные агрегируются напрямую из базы через SQL — это быстрее, чем последовательные вызовы Битрикс API для каждого виджета. Визуализация — Chart.js или ApexCharts, подключаемые как JS-зависимости.
Ключевые SQL-запросы для KPI
Выручка за период с разбивкой по дням:
SELECT DATE(o.date_insert) AS day, COUNT(o.id) AS orders_count, SUM(o.price) AS revenue, AVG(o.price) AS avg_check FROM b_sale_order o WHERE o.lid = 's1' AND o.canceled = 'N' AND o.date_insert >= CURRENT_DATE - INTERVAL '30 days' GROUP BY DATE(o.date_insert) ORDER BY day; Конверсия корзины в заказ:
WITH baskets AS ( SELECT DATE(date_insert) AS day, COUNT(DISTINCT fuser_id) AS basket_users FROM b_sale_basket WHERE site_id = 's1' AND date_insert >= CURRENT_DATE - INTERVAL '30 days' GROUP BY DATE(date_insert) ), orders AS ( SELECT DATE(date_insert) AS day, COUNT(DISTINCT user_id) AS order_users FROM b_sale_order WHERE lid = 's1' AND date_insert >= CURRENT_DATE - INTERVAL '30 days' GROUP BY DATE(date_insert) ) SELECT b.day, b.basket_users, COALESCE(o.order_users, 0) AS order_users, ROUND(COALESCE(o.order_users, 0)::NUMERIC / NULLIF(b.basket_users, 0) * 100, 2) AS conversion FROM baskets b LEFT JOIN orders o ON o.day = b.day ORDER BY b.day; Топ товаров по выручке:
SELECT ie.name AS product_name, SUM(bi.quantity) AS qty_sold, SUM(bi.price * bi.quantity) AS revenue FROM b_sale_basket_item bi JOIN b_sale_order_shipment_item si ON si.basket_id = bi.id JOIN b_sale_order o ON o.id = bi.order_id JOIN b_iblock_element ie ON ie.id = bi.product_id WHERE o.canceled = 'N' AND o.date_insert >= CURRENT_DATE - INTERVAL '30 days' GROUP BY ie.id, ie.name ORDER BY revenue DESC LIMIT 20; PHP-реализация виджетов
Данные отдаются через AJAX-endpoint и рендерятся Chart.js:
// /local/ajax/kpi_data.php if (!$USER->IsAdmin()) { header('HTTP/1.1 403 Forbidden'); exit; } $widget = $_GET['widget'] ?? ''; $dateFrom = $_GET['date_from'] ?? date('Y-m-d', strtotime('-30 days')); $dateTo = $_GET['date_to'] ?? date('Y-m-d'); $db = \Bitrix\Main\Application::getConnection(); switch ($widget) { case 'revenue_chart': $data = $db->query(" SELECT DATE(date_insert) as day, SUM(price) as revenue, COUNT(*) as cnt FROM b_sale_order WHERE lid = ? AND canceled = 'N' AND DATE(date_insert) BETWEEN ? AND ? GROUP BY DATE(date_insert) ORDER BY day ", [SITE_ID, $dateFrom, $dateTo])->fetchAll(); break; case 'top_products': // ... см. запрос выше break; } header('Content-Type: application/json'); echo json_encode(['success' => true, 'data' => $data ?? []]); // Инициализация графика выручки const startDate = new Date(); startDate.setDate(startDate.getDate() - 30); fetch(`/local/ajax/kpi_data.php?widget=revenue_chart&date_from=${encodeURIComponent(startDate.toISOString().slice(0,10))}`) .then(r => r.json()) .then(({ data }) => { const ctx = document.getElementById('revenueChart').getContext('2d'); new Chart(ctx, { type: 'bar', data: { labels: data.map(d => d.day), datasets: [{ label: 'Выручка, $', data: data.map(d => d.revenue), backgroundColor: '#4F81BD', }] }, options: { responsive: true, plugins: { legend: { display: false } } } }); }); Кейс: дашборд для интернет-магазина электроники (наш клиент)
Проект — e-commerce с 4 менеджерами, 50–80 заказов в день. Задача: руководитель хочет видеть выручку в реальном времени, конверсию и загрузку менеджеров. Мы реализовали дашборд с 6 виджетами:
- Выручка сегодня / вчера / неделю назад (сравнение в числах и %)
- График выручки за 30 дней (Bar chart)
- Воронка: посетители → корзины → заказы (данные из Битрикс + Яндекс.Метрика API)
- Топ-10 товаров по выручке за период
- Загрузка менеджеров: количество заказов в работе на каждого
- Незакрытые заказы старше 3 дней (требуют внимания)
Дашборд обновляется каждые 5 минут через setInterval. Тяжёлые агрегатные запросы кэшируются на 5 минут с инвалидацией при изменении статусов заказов. Руководитель проекта отметил: дашборд сократил время на анализ данных втрое.
Время разработки — 12 рабочих дней (SQL-запросы, PHP-backend, верстка дашборда, интеграция с Метрикой). Экономия времени руководителя — до 10 часов в месяц на подготовке отчётов.
Типичные ошибки при разработке дашбордов
- Запросы без кэширования — при 10 000+ заказах страница грузится 20+ секунд.
- Попытка вытащить все данные через
GetList()— на больших объёмах это катастрофа. - Отсутствие фильтра по датам — дашборд бесполезен для анализа динамики.
- Неучтённые права доступа: менеджеры видят чужие заказы.
Мы решаем эти проблемы на этапе проектирования: используем сырые SQL-запросы, тегированное кэширование, ролевую модель.
Что входит в работу
| Компонент | Описание |
|---|---|
| Техническое задание | Описание метрик, источников данных, макетов |
| Прототип | Интерактивный макет в админке |
| Разработка | SQL-запросы, PHP-эндпоинты, JS-виджеты |
| Интеграция | 1С, Яндекс.Метрика, CRM (по необходимости) |
| Тестирование | Нагрузочное тестирование на 1000+ заказов |
| Документация | Инструкция по добавлению новых виджетов |
| Передача прав | Исходный код, доступы к кэшированию |
Сроки
| Объём | Срок |
|---|---|
| 3–4 виджета (выручка, заказы, топ товаров) | 4–6 дней |
| 6–8 виджетов + фильтры по периоду | 8–12 дней |
| Полный дашборд + интеграция с внешними источниками | 12–20 дней |
Почему выбирают нас
Опыт наших инженеров — более 10 лет в Битрикс, свыше 50 проектов с дашбордами. Мы — сертифицированный партнёр 1С-Битрикс. Гарантируем: дашборд не упадёт на пике нагрузки, данные свежие с точностью до 5 минут, визуализация адаптивна для любого экрана. Стоимость разработки — от $400–1.5k в зависимости от числа метрик и сложности.
Оценим ваш проект бесплатно. Свяжитесь с нами, чтобы обсудить метрики и получить прототип дашборда за 1 день.







