Стандартна адміністративна панель Бітрікс показує технічні метрики — навантаження, помилки, стан модулів. Бізнес-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 хвилин, візуалізація адаптивна для будь-якого екрану. Вартість розробки визначається після аналізу вашого проєкту.
Оцінимо ваш проєкт безкоштовно. Зв'яжіться з нами, щоб обговорити метрики та отримати прототип дашборду за 1 день.







