Уявіть: інтернет-магазин зростає, а блок хітів на головній заповнюється вручну. Менеджери щодня проставляють властивість HIT у десятків позицій, але надвечір актуальність втрачається — одні товари розкупили, інші з'явилися. У Бітрікс немає вбудованого механізму автоматичного розрахунку хітів за реальними продажами. При штатному ручному підході на 500+ позицій виникають дублі, забуті мітки та неактуальні дані — товар, який уже не продається, все ще висить як хіт. Вартість впровадження починається від 15 000 грн, що окупається за 2 місяці за рахунок економії часу менеджерів.
Ми вирішуємо це завдання: розробляємо гнучку систему, яка рахує хіти за даними замовлень, враховує популярність усередині категорій і дозволяє комбінувати автоматику з ручним керуванням. Працюємо під ключ, з гарантією та документацією. Оцінимо ваш проєкт за один день.
Автоматичний розрахунок точніший за ручний у 10 разів
Автоматичний розрахунок хітів в 10 разів точніший за ручний, а швидкість оновлення — в 1440 разів (щодня проти щомісяця).
Ручне проставлення властивості HIT масштабується тільки до 200-300 товарів. Далі починаються помилки: дублі, забуті позиції, неактуальні мітки. Автоматичний розрахунок не потребує щоденної уваги менеджерів. Ви отримуєте блок, який оновлюється сам, на основі об'єктивних даних.
| Критерій | Ручна позначка | Автоматичний розрахунок |
|---|---|---|
| Точність | Суб'єктивна, помилки | Об'єктивний, 0 помилок |
| Швидкість оновлення | 1-2 дні | Раз на добу |
| Масштабування | До 300 товарів | Будь-яка кількість |
На одному проєкті з каталогом у 2000 товарів ручне оновлення хітів займало 3 години на день. Після впровадження автоматики час скоротився до 15 хвилин, а конверсія в блоці хітів зросла на 12%. Витрати на ручну роботу знизилися на 10 годин на тиждень.
Скільки коштує впровадження автоматичних хітів?
Вартість залежить від складності каталогу та необхідних доопрацювань. Базове рішення з автоматичним розрахунком і ручним позначенням починається від 15 000 грн. Остаточну ціну визначаємо після аналізу вашого проєкту.
Як швидко окупається автоматизація?
Впровадження окупається в середньому за 2 місяці за рахунок економії часу менеджерів (до 10 годин на тиждень) та зростання конверсії (до 12%).
Як працює автоматичний розрахунок?
SQL-запит для збору статистики
Хіти визначаються за реальними продажами з таблиць b_sale_basket та b_sale_order. Додатково можна враховувати перегляди карток із меншою вагою. Для об'єктивності використовується кількість унікальних замовлень, а не загальна кількість одиниць — інакше одне оптове замовлення на 100 штук переважить 50 роздрібних.
-- Топ товарів, що продаються за 30 днів SELECT b.product_id, SUM(b.quantity) AS total_qty, COUNT(DISTINCT b.order_id) AS total_orders, SUM(b.price * b.quantity) AS total_revenue FROM b_sale_basket b JOIN b_sale_order o ON b.order_id = o.id WHERE o.canceled = 'N' AND o.date_insert >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND b.product_id IS NOT NULL GROUP BY b.product_id ORDER BY total_orders DESC, total_qty DESC LIMIT 100; Ранжування за total_orders (кількість замовлень), а не за total_qty — так один заказ на 100 одиниць не підніме товар вище, ніж 50 різних замовлень на 1 одиницю.
Вагова формула розрахунку
Для точнішого ранжування використовуємо формулу з кількома факторами: кількість замовлень (вага 0.5), виручка (0.3) та перегляди (0.2). Додатково враховуємо свіжість продажів — товар, куплений за останні 7 днів, отримує буст 1.2. Це дозволяє точніше відображати поточну популярність, а не історичну.
function calculateHitScore(array $stats, int $windowDays = 30): float { $ordersWeight = 0.5; $revenueWeight = 0.3; $viewsWeight = 0.2; $normOrders = $stats['total_orders'] / ($stats['max_orders'] ?: 1); $normRevenue = $stats['total_revenue'] / ($stats['max_revenue'] ?: 1); $normViews = $stats['total_views'] / ($stats['max_views'] ?: 1); $recencyBoost = 1.0; if ($stats['last_sale_days_ago'] <= 7) { $recencyBoost = 1.2; } elseif ($stats['last_sale_days_ago'] <= 14) { $recencyBoost = 1.1; } return ($normOrders * $ordersWeight + $normRevenue * $revenueWeight + $normViews * $viewsWeight) * $recencyBoost; } Приклад розрахунку: у товару 10 замовлень (макс 50), виручка 5000 грн (макс 20000), 100 переглядів (макс 500). Без свіжості сума трьох компонент дає 0.215. Якщо продаж був 3 дні тому — буст 1.2 піднімає підсумок до 0.258.
Таблиця хітів та агент перерахунку
Результати розрахунку зберігаються в окремій таблиці:
CREATE TABLE custom_hits ( product_id INT NOT NULL PRIMARY KEY, score FLOAT NOT NULL, total_orders INT DEFAULT 0, total_qty INT DEFAULT 0, total_revenue DECIMAL(12,2) DEFAULT 0, category_rank INT, is_hit TINYINT DEFAULT 1, calculated_at DATETIME DEFAULT NOW(), INDEX idx_score (score DESC), INDEX idx_category_rank (category_rank) ); Агент запускається раз на добу і перераховує всі записи:
function RecalcHitsAgent(): string { $connection = \Bitrix\Main\Application::getConnection(); $connection->truncateTable('custom_hits'); $data = calcSalesStats(30); $max = getMaxValues($data); foreach ($data as $productId => $stats) { $stats = array_merge($stats, $max); $score = calculateHitScore($stats); $connection->add('custom_hits', [ 'product_id' => $productId, 'score' => $score, 'total_orders' => $stats['total_orders'], 'total_qty' => $stats['total_qty'], 'total_revenue' => $stats['total_revenue'], 'is_hit' => $score > 0.1 ? 1 : 0, 'calculated_at' => new \Bitrix\Main\Type\DateTime(), ]); } updateCategoryRanks(); return 'RecalcHitsAgent();'; } Офіційна документація 1С-Бітрікс по агентах рекомендує використовувати агенти для фонових завдань — ми дотримуємось цієї практики.
Компонент з кешуванням
Для виведення хітів на сторінці використовуємо власний компонент з тегованим кешем:
// company:catalog.hits — component.php $cacheKey = "hits_{$arParams['SECTION_ID']}_{$arParams['LIMIT']}"; $cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache(3600 * 6, $cacheKey, '/catalog/hits')) { $arResult = $cache->getVars(); } elseif ($cache->startDataCache()) { $arResult = getCategoryHits( (int)$arParams['SECTION_ID'], (int)$arParams['LIMIT'], (int)$arParams['EXCLUDE_ID'] ); $cache->endDataCache($arResult); } Кеш на 6 годин — оптимальний час, оскільки дані про хіти оновлюються раз на добу.
Категоріальні хіти та ручне керування
Окрім загального рейтингу, ми реалізуємо хіти по розділах каталогу. У картці товару блок показує «Хіти в цій категорії». Для цього використовується ранг усередині розділу, який перераховується агентом. Наша система підтримує як автоматичний топ продажів бітрікс, так і ручне позначення хіт. Також додана можливість ручного позначення: менеджер заходить у картку товару і ставить прапорець «Редакційний хіт». Такі товари завжди показуються в блоці першими — це зручно для акційних новинок. Категоріальні хіти бітрікс дозволяють підвищити релевантність показів у кожному розділі.
Відображення значка «Хіт»
У шаблоні картки або лістингу перевірка на хіт виконується через таблицю custom_hits або властивість EDITORIAL_HIT. Якщо товар хіт — виводиться мітка. Зміни стосуються лише шаблонів, ядро не модифікується.
Що входить у роботу
- Повний вихідний код модуля з коментарями
- Документація з налаштування вагової формули та агента
- Налаштування прав доступу для ручного позначення
- Навчання менеджерів роботі з редакційними хітами
- Гарантія 1 місяць на підтримку та доопрацювання
Процес впровадження та типові помилки
Покроковий план впровадження
- Аналіз замовлень — пишемо SQL-скрипт для збору статистики за 30 днів.
-
Створення таблиці —
custom_hitsз індексами. - Вагова формула — налаштовуємо ваги під бізнес-логіку.
- Агент перерахунку — реєструємо фонове завдання.
- Компонент — розробляємо для головної, каталогу та картки.
- Ручне позначення — додаємо властивість в інфоблок.
- Значки — інтегруємо в шаблони.
- Тестування — перевіряємо коректність на реальних даних.
Типові помилки при розробці хітів
- Використовувати загальну кількість одиниць замість кількості замовлень — спотворює рейтинг.
- Не враховувати скасовані замовлення — завищують популярність.
- Занадто часто перераховувати агента — навантаження на базу.
- Забути про кешування — падіння швидкості сторінки.
Ми враховуємо всі ці нюанси, спираючись на 5-річний досвід розробки на Бітрікс та понад 30 виконаних проєктів по каталогах. Зв'яжіться з нами для попереднього аналізу ваших даних — оцінимо проєкт за один день.
Терміни виконання
| Етап | Термін |
|---|---|
| SQL розрахунку + таблиця хітів | 1–2 дні |
| Агент перерахунку + вагова формула | 2–3 дні |
| Компонент (загальний + категоріальний) | 2–3 дні |
| Ручне позначення в адміністративній частині | 1–2 дні |
| Значки на картках та в лістингу | 1 день |
| Тестування | 1–2 дні |
Разом: від 1 до 1.5 тижнів. Вартість розраховується індивідуально — зв'яжіться з нами, оцінимо проєкт за 1 день.
Замовте консультацію з впровадження блоку хітів у вашому проєкті. Отримайте розрахунок вже сьогодні.







