Разработка дашборда аналитики на Vue.js для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка дашборда аналитики на Vue.js для 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    844
  • 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
    582
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    749
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    981

Разработка дашборда аналитики на Vue.js для 1С-Битрикс

Стандартные отчёты в административной панели Битрикса — это статичные HTML-таблицы, которые генерируются при каждом обновлении страницы. Для оперативного контроля бизнес-показателей этого недостаточно: нельзя изменить период без перезагрузки, нет визуализации трендов, данные из нескольких источников не агрегированы. Vue.js в связке с Chart.js или ECharts превращает данные Битрикса в живой дашборд.

Откуда берутся данные

Битрикс хранит всё необходимое в базе: заказы в b_sale_order, позиции в b_sale_basket, оплаты в b_sale_pay_system_action, покупатели в b_user. D7 ORM позволяет строить агрегирующие запросы напрямую через DataManager:

$result = \Bitrix\Sale\Internals\OrderTable::getList([
    'select' => [
        new \Bitrix\Main\ORM\Fields\ExpressionField(
            'TOTAL', 'SUM(%s)', 'PRICE'
        ),
        new \Bitrix\Main\ORM\Fields\ExpressionField(
            'COUNT', 'COUNT(*)', 'ID'
        ),
        'DATE_KEY' => 'DATE_INSERT',
    ],
    'filter' => [
        '>=DATE_INSERT' => $dateFrom,
        '<=DATE_INSERT' => $dateTo,
        '=STATUS_ID' => ['N', 'P', 'F'],
    ],
    'group' => ['DATE_KEY'],
]);

Кастомный REST-контроллер (наследник Bitrix\Main\Engine\Controller) принимает параметры периода и возвращает агрегированный JSON. Контроллер закрыт на checkPermissions — только пользователи с правом sale_order_view.

Структура Vue-дашборда

Дашборд строится из независимых виджетов — каждый Widget*.vue компонент самостоятельно загружает свои данные и отображает состояние загрузки. Родительский Dashboard.vue управляет только общим периодом через provide/inject.

Ключевые виджеты:

  • RevenueChart — линейный или столбчатый график выручки по периодам (Chart.js line)
  • OrdersKpi — карточки ключевых показателей: выручка, количество заказов, средний чек, конверсия
  • TopProducts — горизонтальный bar chart топ-10 товаров по продажам
  • FunnelWidget — воронка: посетители → добавили в корзину → оформили заказ → оплатили
  • OrdersTable — последние заказы с пагинацией, быстрая ссылка на заказ в админке

Общий фильтр периода — DatePicker с предустановленными диапазонами («Сегодня», «Эта неделя», «Этот месяц», «Прошлый месяц», «Произвольный»). При изменении периода все виджеты получают watchEffect или watch на period из inject и перезагружают данные.

Интеграция с несколькими источниками

Реальный дашборд редко ограничен одной системой. Типичный стек данных для e-commerce на Битрикс:

  • Заказы и выручкаb_sale_order, b_sale_basket через D7
  • Трафик — Yandex.Metrika API или Google Analytics 4 Data API
  • CRM-показатели — если стоит модуль crm, то CCrmDeal::GetList или Bitrix\Crm\DealTable
  • Рекламные расходы — Яндекс.Директ API, VK Ads API, если настроены интеграции

В Vue каждый источник — отдельный composable:

// useMetrikaData.js
export function useMetrikaData(period) {
    const data = ref(null);
    const loading = ref(false);
    const error = ref(null);

    watchEffect(async () => {
        loading.value = true;
        try {
            data.value = await fetchMetrika(period.value);
        } catch (e) {
            error.value = e.message;
        } finally {
            loading.value = false;
        }
    });
    return { data, loading, error };
}

Параллельные запросы через Promise.all — дашборд не ждёт последовательно каждый источник.

Кейс: дашборд для руководителя интернет-магазина

Магазин электроники на Битриксе, 200-400 заказов в день. Проблема: директор ежедневно просил менеджеров собрать отчёт из 1С, панели Битрикса и Метрики. Процесс занимал 40 минут.

Разработали дашборд, доступный по URL /area51/dashboard/sales/ (в административной части Битрикса, под авторизацией). Технически — страница административного раздела через CAdminSection, на которую монтируется Vue-приложение.

Виджеты: выручка сегодня/вчера/7 дней с тренд-стрелкой, количество заказов по статусам (новые/в обработке/выполнены/отменены), топ-5 товаров за период, сравнение двух периодов на одном графике, показатель брошенных корзин (b_sale_basket с ORDER_ID IS NULL).

Данные по брошенным корзинам — собственный запрос, которого нет в штатных отчётах Битрикса:

SELECT DATE(DATE_INSERT) as day, COUNT(DISTINCT FUSER_ID) as abandoned
FROM b_sale_basket
WHERE ORDER_ID IS NULL
  AND DATE_INSERT >= NOW() - INTERVAL 30 DAY
GROUP BY day

Дашборд обновляется автоматически каждые 5 минут через setInterval — актуальные данные без F5. Время разработки — 3 недели с учётом всех виджетов и интеграции с Метрикой.

Производительность запросов

Агрегирующие запросы по b_sale_order на больших базах (от 100К заказов) требуют индексов. Проверяем через EXPLAIN:

  • DATE_INSERT — индекс обязателен для фильтрации по периоду
  • Составной индекс (STATUS_ID, DATE_INSERT) — для фильтрации по статусу и периоду одновременно
  • Результаты тяжёлых агрегаций кешируем через Bitrix\Main\Data\Cache на 5-15 минут

Этапы и сроки

Масштаб дашборда Ориентировочный срок
3-4 KPI-карточки + один график 3-5 дней
Полноценный дашборд продаж (5-8 виджетов) 2-3 недели
Дашборд с интеграцией внешних API (Метрика, CRM) 3-5 недель
Аналитическая платформа с несколькими ролями 6-10 недель

Сроки зависят от количества источников данных, сложности агрегаций и требований к кастомным визуализациям.