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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка дашборду з KPI для адміністратора 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

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

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

Дашборд реалізується як окрема сторінка в адміністративній частині: /bitrix/admin/kpi_dashboard.php. Або як публічна сторінка в закритому розділі — для доступу менеджерів без права на /bitrix/admin/.

Дані агрегуються безпосередньо з бази через SQL — це швидше, ніж послідовні виклики API 1С-Бітрікс для кожного віджета. Візуалізація — Chart.js або ApexCharts, що підключаються як JavaScript-залежності.

Ключові 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. Воронка: відвідувачі → кошики → замовлення (дані з 1С-Бітрікс + 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 днів