Прогнозирование спроса на базе ML в 1С:ERP снижает оборачиваемые запасы на 10–30%, уменьшает out-of-stock и возвраты, ускоряет MRP/MPS-планирование и повышает точность закупок. Рабочая схема: вытягиваем историю продаж и атрибуты товаров из 1С → обучаем модели (по типам номенклатуры) → записываем прогнозы в регистр сведений → используем в MRP/закупках/производстве → контролируем качество по метрикам (WAPE, sMAPE) и сервис-левелу.

Где в 1С:ERP нужен прогноз

  • Закупки и MRP: расчёт потребности, точки заказа, страховой запас, мульти-склады.
  • Производство: MPS, загрузка мощностей, календарно-сетевые планы, партия-размер.
  • Сбыт: промо-планирование, бюджет продаж, распределение по каналам/регионам.
  • Финансы: ДДС, движение ТМЗ, страхование рисков обесценения запасов.
  • HR/операции: сменные графики, аутсорс-бригады, логистика.

Данные: что нужно собрать из 1С

Минимальный набор полей (обычно из регистров накопления и справочников):

  • История продаж: Дата, Номенклатура, Склады/Филиалы, Количество, Цена/Сумма, Клиент (при необходимости), Источник заказа/канал.
  • Остатки и доступность: нач./конечные остатки, резервы, в пути.
  • Сроки поставки: lead time по поставщикам (регистр сведений или карточка договора).
  • Атрибуты SKU: группа, бренд, размерность, упаковка, сезонность, «медленно/быстрооборот».
  • Цены, акции, промо: скидки, RRP, промо-календари.
  • Календари: производственный, выходные/праздники, региональные особенности.

Рекомендуем хранить прогноз в отдельном Регистре сведений “Прогноз спроса” с измерениями: Номенклатура, Склад, Период, Сценарий и ресурсами: Количество, Доверие, Метод/ВерсияМодели.

Горизонт и частота

  • Горизонт: для закупок — 8–12 недель; для производства — 4–8 недель; для финансов — 3–6 месяцев.
  • Гранулярность: день для высокооборотных, неделя — стандарт, месяц — для долгих циклов.
  • Выравнивание: привязываем к плановому календарю и учётной политике (недельные слоты).

Подходы к моделям: когда что использовать

  1. Базовые (бенчмарки): наивный сдвиг, скользящее среднее, экспоненциальное сглаживание.
    — Быстрый старт и baseline для сравнения.
  2. Временные ряды: ETS/ARIMA/Prophet (для явной сезонности и тренда).
    — Хорошо работают на стабильных SKU.
  3. ML-модели по признакам: градиентный бустинг (CatBoost/XGBoost), Random Forest, линейные регрессии с регуляризацией.
    — Учитывают цену, промо, каналы, календари, атрибуты SKU.
  4. Разреженный спрос: Croston / SBA / TSB, или ML-подход с классификацией «будет продажа/нет» + регрессия по объёму.
    — Для медленнооборачиваемых и запчастей.
  5. Иерархические прогнозы: SKU → категория → бренд → портфель; reconciliation сверху вниз/снизу вверх.
    — Стабилизируют нестабильные ряды и помогают при cold start.

Фичи (признаки), которые дают эффект

  • Календари: номер недели/дня, праздничные/выходные флаги, начало/конец месяца/квартала.
  • Промо-фичи: скидки, тип акции, длительность, лаг-эффект.
  • Цены/перепады цен, эластичность.
  • Атрибуты SKU и истории: ABC/XYZ, сезон, «новинка», жизненный цикл.
  • Сроки поставки (lead time), SLA поставщика, доступность на складе.
  • Каналы/регионы, витринные остатки, минимальные партии.

Архитектура интеграции с 1С: три проверенных варианта

Вариант A. Встроенный прогноз (простые методы)

  • Плюс: быстро, без внешних сервисов.
  • Минус: ограниченная точность и слабая работа с промо/ценой.

Вариант B. Внешний ML-сервис (Python/.NET) с REST API

  • Плюс: лучшие алгоритмы, A/B-тесты, версионирование моделей.
  • Минус: нужна поддержка сервиса (DevOps/инфра).

Вариант C. Гибрид

  • Базовый прогноз — внутри 1С, “тяжёлые” SKU/категории — через ML-сервис.
  • Баланс между простотой и качеством.

Технологически 1С общается с ML-сервисом через HTTP-запросы (JSON), коннекторы, внешние компоненты. Прогнозы пишутся обратно в регистр сведений и подхватываются MRP.

Как встроить в процессы MRP/закупок

  1. Точка заказа (ROP):
    ROP=μL+z⋅σLROP = \mu_{L} + z \cdot \sigma_{L}ROP=μL​+z⋅σL​,
    где μL\mu_{L}μL​ — спрос за время поставки, zzz — квантиль для целевого сервиса (например, 1.64 для 95%), σL\sigma_{L}σL​ — стандартное отклонение спроса за lead time.
  2. Страховой запас (SS):
    SS=z⋅σLSS = z \cdot \sigma_{L}SS=z⋅σL​ (вариации: учитываем вариативность lead time и спроса одновременно).
  3. Политики пополнения: (s, S), Min-Max, периодический заказ (T).
    — Рассчитываем из прогнозов + ограничений поставщика (MOQ, кратности).
  4. Мульти-склад: по каждому складу свой прогноз; перераспределение запасов (transshipment) по правилу сервиса и стоимости.

Метрики качества и целевые уровни

МетрикаЧто измеряетНорма/Цель
WAPE (взвешенная абсолютная ошибка)Доля ошибки по сумме объёмов≤ 15–20% (по портфелю)
sMAPEСтабильность при низких объёмах≤ 20–25%
MASEСравнение с наивным прогнозом< 1 (лучше наивного)
Service LevelДоля заказов без OOS92–98% (по классу SKU)

Жизненный цикл: от пилота к промышленной эксплуатации

  1. Диагностика данных: полнота, дубликаты, каскад массивов, “аномалии промо”.
  2. Baseline: простые модели в 1С — получить исходную WAPE.
  3. ML-пилот на 15–20% ассортимента: быстрооборот + медленнооборот.
  4. A/B-сравнение: старый vs новый прогноз по метрикам и сервис-левелу.
  5. Интеграция: регламентные задания (ночные перезапуски), восстановление при сбоях, логирование.
  6. Модел-операции (MLOps): версионирование, мониторинг деградации, переобучение по расписанию.
  7. Расширение на 100% SKU и на мульти-склад.

Пример структуры в 1С (практика)

Регистр сведений “Прогноз спроса”

  • Измерения: Номенклатура; Склад; Период (Неделя); Сценарий (База/Промо/Оптимистичный).
  • Ресурсы: Количество; Доверие; ВерсияМодели; Источник (Baseline/ML).
  • Реквизиты: ДатаОбучения; Автор; Комментарий.

Регламентные задания

  • “Выгрузка истории продаж” (ежедневно 02:00).
  • “Запрос прогнозов у ML-сервиса” (ежедневно 03:00).
  • “Запись прогнозов в регистр” (ежедневно 03:30).
  • “Проверка целостности и алёрты” (ежедневно 04:00).

Использование в MRP

  • Источник потребности: Прогноз спроса вместо «прошлого периода».
  • UoM/кратность: трансформация к закупочной единице (короб, паллета).
  • План-факт: витрина BI (внутри 1С отчёты + выгрузка в Power BI/Metabase).

Частые ошибки и как их избежать

  • Смешивание промо с обычным спросом → выделяйте промо-эффект отдельно.
  • Одинаковая модель для всех SKU → сегментируйте (ABC/XYZ, разреженный/плотный).
  • Нет baseline → невозможно доказать эффект. Сначала сравните с простыми моделями.
  • Отсутствие SLA на данные → стандартизируйте выгрузки, валидируйте перед обучением.
  • Нет цикла переобучения → деградация точности через 3–6 месяцев.

Частые вопросы

Можно ли обойтись без внешнего ML-сервиса?
Да, для части SKU хватит базовых методов внутри 1С. Но ML заметно улучшит точность при промо, ценовых колебаниях и сезонности.

Что делать с новыми товарами без истории?
Иерархический прогноз + «товары-аналоги» по атрибутам, затем быстрое обучение по накопленной истории.

Как часто переобучать модель?
Обычно раз в 4–8 недель или при существенном сдвиге ассортимента/цен/каналов.

Какие метрики брать в договор?
WAPE по ключевым категориям и целевой Service Level при ограничении среднего DOH.

Как учитывать мульти-склад и транзит?
Делать прогноз по складам и разрешить перераспределение (переводы) с учётом цены и времени.

Рекомендуемая структура в 1С

// Псевдо: запрос к ML-сервису
ТелоЗапроса = Новый Структура;
ТелоЗапроса.Вставить("ДатаНач", ДатаНач);
ТелоЗапроса.Вставить("ДатаКон", ДатаКон);
ТелоЗапроса.Вставить("SKU", МассивSKU);
ТелоЗапроса.Вставить("Календарь", Календарь);
JSON = ЗаписатьJSON(ТелоЗапроса);

HTTP = Новый HTTPЗапрос(АдресСервиса + "/forecast");
HTTP.УстановитьТелоИзСтроки(JSON, "application/json");

Ответ = HTTPКлиент.Выполнить(HTTP);
Если Ответ.КодСостояния = 200 Тогда
    Прогнозы = ПрочитатьJSON(Ответ.ПолучитьТелоКакСтроку());
    // Запись в РегистрСведений.ПрогнозСпроса(...)
Иначе
    Сообщить("Ошибка сервиса: " + Ответ.КодСостояния);
КонецЕсли;