Налаштування дашборду порівняння цін із конкурентами 1С-Бітрікс

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

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

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

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

  • 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

Налаштування дашборду порівняння цін з конкурентами у 1С-Бітрікс

Категорійний менеджер не повинен щоразу відкривати картку товару, щоб зрозуміти, де є цінова проблема. Дашборд — це зведений екран, який за 30 секунд показує: які товари програють за ціною, наскільки, скільки таких товарів, і дозволяє прийняти рішення прямо там. Мета дашборду — скоротити час від виявлення проблеми до дії.

Джерела даних

Дашборд будується на трьох таблицях:

  • bl_competitor_prices — актуальні ціни конкурентів
  • bl_product_price_position — агрегати (мін/макс/середнє конкурентів, наш ранг)
  • b_catalog_price — наші поточні ціни

Дані в агрегатну таблицю оновлюються агентом після кожної синхронізації цін конкурентів.

Ключові метрики дашборду

Цінова позиція — розподіл товарів за місцями:

SELECT rank, COUNT(*) as product_count
FROM bl_product_price_position
WHERE updated_at > NOW() - INTERVAL '24 hours'
GROUP BY rank
ORDER BY rank;

Відображається як bar chart: «1 місце — 34 товари, 2 місце — 87, 3 місце — 124...»

Товари, де ми дорожчі за мінімальну ціну конкурента:

SELECT
    ie.ID,
    ie.NAME,
    ppp.our_price,
    ppp.min_comp as competitor_min,
    ROUND((ppp.our_price - ppp.min_comp) / ppp.min_comp * 100, 1) as diff_pct,
    ppp.rank
FROM bl_product_price_position ppp
JOIN b_iblock_element ie ON ie.ID = ppp.product_id
WHERE ppp.our_price > ppp.min_comp
  AND ppp.min_comp > 0
ORDER BY diff_pct DESC
LIMIT 50;

Втручена виручка (оцінка):

SELECT
    SUM(
        (ppp.our_price - ppp.min_comp) / ppp.our_price * oe.order_count * ppp.our_price
    ) as estimated_lost_revenue
FROM bl_product_price_position ppp
JOIN (
    SELECT product_id, COUNT(DISTINCT order_id) as order_count
    FROM b_sale_basket
    WHERE date_insert > NOW() - INTERVAL '30 days'
    GROUP BY product_id
) oe ON oe.product_id = ppp.product_id
WHERE ppp.our_price > ppp.min_comp;

Структура сторінки дашборду

Сторінка /bitrix/admin/price_dashboard.php складається з блоків:

Верхній блок — зведені KPI:

  • Всього товарів під моніторингом: N
  • З них дорожчих за конкурентів: N (XX%)
  • Середня цінова позиція: X.X місце
  • Товарів на 1-му місці: N

Середній блок — теплова карта за розділами каталогу:

// Запит агрегатів за розділами
$sectionStats = \Bitrix\Main\Application::getConnection()->query("
    SELECT
        s.NAME as section_name,
        COUNT(*) as total_products,
        COUNT(CASE WHEN ppp.rank = 1 THEN 1 END) as on_first_place,
        ROUND(AVG(ppp.rank), 1) as avg_rank,
        COUNT(CASE WHEN ppp.our_price > ppp.min_comp THEN 1 END) as losing_count
    FROM bl_product_price_position ppp
    JOIN b_iblock_element ie ON ie.ID = ppp.product_id
    JOIN b_iblock_section s ON s.ID = ie.IBLOCK_SECTION_ID
    GROUP BY s.ID, s.NAME
    ORDER BY losing_count DESC
")->fetchAll();

Кожен розділ — рядок із колірною індикацією: зелений (>70% товарів на 1 місці), жовтий (50–70%), червоний (<50%).

Нижній блок — таблиця проблемних товарів із кнопками дій:

Товар Арт Наша ціна Мін. конкурент Різниця Rank [Змінити ціну]

Кнопка «Змінити ціну» — inline-редагування зі збереженням через AJAX у b_catalog_price. При збереженні в лог bl_price_change_log записується: хто, коли, з якої ціни, на яку.

AJAX-оновлення даних

Дашборд оновлюється без перезавантаження сторінки — кнопка «Оновити дані» ініціює синхронізацію з джерелом цін:

document.getElementById('refresh-btn').addEventListener('click', function() {
    this.disabled = true;
    fetch('/bitrix/services/main/ajax.php?action=PriceDashboard:refresh', {
        method: 'POST',
        headers: {'X-Bitrix-Csrf-Token': BX.bitrix_sessid()}
    })
    .then(r => r.json())
    .then(data => {
        if (data.status === 'ok') location.reload();
    });
});

Експорт у Excel

Кнопка «Вивантажити в Excel» формує звіт через \PhpOffice\PhpSpreadsheet: усі товари з цінами конкурентів по стовпцях (кожен конкурент — окремий стовпець), нашою ціною, позицією, рекомендованою ціною (якщо налаштований репрайсер).

Терміни

Етап Термін
Агрегатні запити та оптимізація 2 дні
Верхній блок KPI + chart.js 1 день
Теплова карта за розділами 1 день
Таблиця проблемних товарів + inline-редагування 2 дні
Експорт Excel 1 день
Тестування 1 день
Разом 8–9 днів