Разработка дашборда с KPI для администратора 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка дашборда с KPI для администратора 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1165
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка дашборда с KPI для администратора 1С-Битрикс

Стандартная административная панель Битрикс показывает технические метрики — нагрузку, ошибки, состояние модулей. Бизнес-KPI там нет: выручку за сегодня, конверсию воронки, средний чек по менеджерам смотрят в отдельных системах или вовсе в Excel. Дашборд с бизнес-метриками, встроенный прямо в Битрикс, убирает этот разрыв.

Архитектура дашборда

Дашборд реализуется как отдельная страница в административной части: /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 ?? []]);
// Инициализация графика выручки
fetch('/local/ajax/kpi_data.php?widget=revenue_chart&date_from=2024-01-01')
    .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 виджетами:

  1. Выручка сегодня / вчера / неделю назад (сравнение в числах и %)
  2. График выручки за 30 дней (Bar chart)
  3. Воронка: посетители → корзины → заказы (данные из Битрикс + Яндекс.Метрика API)
  4. Топ-10 товаров по выручке за период
  5. Загрузка менеджеров: количество заказов в работе на каждого
  6. Незакрытые заказы старше 3 дней (требуют внимания)

Дашборд обновляется каждые 5 минут через setInterval. Тяжёлые агрегатные запросы кэшируются на 5 минут в таблице b_cache_tag с инвалидацией при изменении статусов заказов.

Время разработки — 12 рабочих дней (SQL-запросы, PHP-backend, верстка дашборда, интеграция с Метрикой).

Сроки

Объём Срок
3–4 виджета (выручка, заказы, топ товаров) 4–6 дней
6–8 виджетов + фильтры по периоду 8–12 дней
Полный дашборд + интеграция с внешними источниками 12–20 дней