Настройка предиктивной аналитики продаж на 1С-Битрикс
Предиктивная аналитика продаж — это прогноз будущих продаж на основе исторических данных. Для интернет-магазина это отвечает на вопросы: сколько единиц товара X продастся в следующем месяце, в какой период ожидать пик продаж, какие товары нужно закупить заранее. В Битрикс исторические данные есть — нужно построить конвейер их обработки.
Данные для прогноза
Из Битрикс доступны все необходимые временные ряды:
- Продажи по дням:
b_sale_order_basketJOINb_sale_orderс группировкой поDATE_INSERT::date - Просмотры товара:
b_catalog_viewed_productпоDATE_VISIT::date - Добавления в корзину:
b_sale_basketпоDATE_INSERT::date - Конверсия: отношение заказов к просмотрам по периодам
Базовый запрос для временного ряда продаж по товару:
SELECT
DATE(o.DATE_INSERT) AS sale_date,
SUM(ob.QUANTITY) AS qty_sold,
SUM(ob.PRICE * ob.QUANTITY) AS revenue
FROM b_sale_order_basket ob
JOIN b_sale_order o ON o.ID = ob.ORDER_ID AND o.CANCELED = 'N'
WHERE ob.PRODUCT_ID = :product_id
AND o.DATE_INSERT >= NOW() - INTERVAL '365 days'
GROUP BY DATE(o.DATE_INSERT)
ORDER BY sale_date;
Простые методы прогнозирования без ML
Скользящее среднее — прогноз на следующий период = среднее продаж за последние N недель аналогичного периода. Реализуется чистым SQL.
Сезонное сглаживание — умножаем базовый прогноз на сезонный коэффициент. Коэффициент считается как отношение продаж конкретного месяца к среднемесячным за год по историческим данным.
Линейный тренд — если продажи растут на 5% каждый месяц, экстраполируем тренд. Коэффициент тренда: регрессия методом наименьших квадратов по исторической выборке.
Эти алгоритмы реализуются в PHP без внешних библиотек — достаточно массивов данных из БД.
Хранение прогнозов
Создайте таблицу bl_sales_forecast:
| Поле | Тип | Описание |
|---|---|---|
product_id |
INT | ID товара |
forecast_date |
DATE | Дата прогноза |
predicted_qty |
FLOAT | Прогнозируемое количество |
predicted_revenue |
FLOAT | Прогнозируемая выручка |
confidence_low |
FLOAT | Нижняя граница доверительного интервала |
confidence_high |
FLOAT | Верхняя граница |
method |
VARCHAR | Метод прогнозирования |
created_at |
TIMESTAMP | Дата расчёта |
Агент раз в неделю пересчитывает прогнозы на следующие 4–8 недель для всех активных товаров.
Дашборд прогнозов в административном разделе
В разделе «Магазин → Аналитика» добавьте страницу прогнозов. Компонент читает bl_sales_forecast и отображает:
- График план/факт для выбранного товара за последние 3 месяца
- Топ-20 товаров с наибольшим прогнозируемым спросом на следующую неделю
- Товары, у которых прогнозируемый спрос превышает текущий остаток — сигнал к закупке
График строится через Chart.js или ApexCharts, данные подгружаются AJAX из контроллера AdminForecastController.
Интеграция с управлением запасами
Когда прогноз показывает, что через 2 недели потребуется 50 единиц товара, а на складе только 10 — создаётся рекомендация к закупке. Агент сравнивает bl_sales_forecast.predicted_qty с b_catalog_store_product.AMOUNT и записывает рекомендации в bl_reorder_suggestions — эта же таблица используется в услуге автоматического заказа у поставщиков.
Что настраиваем
- SQL-запросы для построения временных рядов продаж из
b_sale_order_basket - Алгоритмы прогнозирования (скользящее среднее + сезонные коэффициенты) в PHP-классе
SalesForecastEngine - Агент еженедельного пересчёта прогнозов с записью в
bl_sales_forecast - Дашборд в административном разделе с графиком план/факт
- Интеграцию прогнозов с модулем управления запасами через
bl_reorder_suggestions







