Настройка автоматического заказа товаров у поставщиков 1С-Битрикс
Представьте: менеджер тратит 3 часа в день на ручной мониторинг остатков 80 000 позиций. Товар закончился, а заказ не сделан — потерянные продажи и срочные доставки за ваш счёт. Или наоборот: закупка «на глаз» приводит к заморозке оборотных средств. Мы решаем это через автоматический заказ на CommerceML и штатные механизмы Битрикс.
Наша архитектура исключает человеческий фактор: агент проверяет остатки, сравнивает с порогом перезаказа и создаёт заказ. Отправка происходит по API, email или EDI — в зависимости от возможностей поставщика. За последние 5 лет внедрений мы сократили время на закупки на 70% у клиентов из розницы и дистрибуции.
Проблемы, которые решаем
Типичная ситуация: среднее время поставки 10 дней, порог перезаказа не настроен — к приходу товара уже дефицит. Или наоборот: порог завышен, страховой запас 40% вместо 20%. Ручной контроль приводит к ошибкам:
- Мониторинг тысяч позиций вручную — до 3 часов в день.
- Разные форматы отправки (email, API, EDI) для каждого поставщика.
- Дублирование заказов при сбоях интеграции.
Мы закрываем каждую проблему архитектурно: пороговые значения с прогнозом, агент с защитой NOT EXISTS, гибкие адаптеры отправки.
Как работает агент перезаказа?
Агент AutoReorderAgent запускается по расписанию (раз в час или раз в сутки) и выполняет запрос: выбирает товары, у которых текущий остаток ниже порога, и для которых нет активного заказа у того же поставщика. Условие NOT EXISTS ключевое — оно блокирует дублирование даже при сбоях cron.
function AutoReorderAgent(): string { $db = \Bitrix\Main\Application::getConnection(); $result = $db->query(" SELECT rs.product_id, rs.reorder_qty, rs.supplier_id, SUM(sp.AMOUNT) AS current_stock FROM bl_reorder_settings rs LEFT JOIN b_catalog_store_product sp ON sp.PRODUCT_ID = rs.product_id WHERE rs.active = 1 GROUP BY rs.product_id, rs.reorder_qty, rs.supplier_id HAVING current_stock < rs.reorder_point AND NOT EXISTS ( SELECT 1 FROM bl_supplier_orders so WHERE so.product_id = rs.product_id AND so.status IN ('pending', 'sent', 'confirmed') ) "); while ($row = $result->fetch()) { SupplierOrderService::create( $row['supplier_id'], $row['product_id'], $row['reorder_qty'] ); } return 'AutoReorderAgent();'; } Почему пороговые значения лучше считать с прогнозом?
Простое фиксированное число не учитывает сезонность и тренды. Мы используем средние продажи за 90 дней, умножаем на время поставки (lead time) и добавляем 20% страхового запаса. Формула пересчитывается автоматически раз в неделю через агент. Результат: точность прогноза 85–90% и снижение страхового запаса на 30%.
Как исключить дублирование заказов?
Дублирование — частая проблема самостоятельной автоматизации. Мы реализовали двойную защиту:
- В SQL-запросе агента — условие
NOT EXISTS(новый заказ не создаётся, пока предыдущий в статусеpending,sentилиconfirmed). - Логика блокировки: если заказ не подтверждён поставщиком в течение 24 часов, агент не создаёт повторный, а уведомляет администратора.
Также ведётся лог всех операций (согласно рекомендациям официальной документации Битрикс по созданию агентов).
Как мы это делаем: кейс из нашей практики
Наш клиент — сеть из 15 магазинов автозапчастей с каталогом 80 000 позиций и 200 поставщиков. Требовалось автоматизировать заказ по API для 10 крупных поставщиков и по email для остальных. Мы спроектировали три таблицы:
-
bl_reorder_settings— пороги для товара с привязкой к поставщику. -
bl_supplier_orders— история заказов со статусами. -
bl_supplier_shipping_methods— способ и конфигурация отправки.
Агент создаёт запись в bl_supplier_orders, затем SupplierOrderService выбирает адаптер (API/Email/EDI) и отправляет. После подтверждения поставщиком статус обновляется через вебхук или вручную. При приходе товара менеджер создаёт документ поступления — остатки растут автоматически.
Результат: менеджеры перестали тратить 3 часа в день на заказы, дефицит снизился с 12% до 2%. Стоимость проекта окупилась за 3 месяца за счёт сокращения простоев и срочных доставок.
Что входит в работу
| Компонент | Описание |
|---|---|
| Аналитика | Сбор требований, аудит текущих остатков и поставщиков |
| Проектирование | Схема БД, архитектура агента и адаптеров |
| Разработка | Таблицы, агент, классы отправки, админ-интерфейс |
| Тестирование | Проверка на дублирование, edge-кейсы (нулевые остатки, ошибки API) |
| Деплой | Настройка расписания агента, миграции, документация |
| Обучение | Инструкция для менеджеров по подтверждению заказов и приходу |
Ориентировочные сроки: от 5 до 20 дней в зависимости от числа поставщиков и способов интеграции. Стоимость рассчитывается индивидуально. Напишите нам — мы оценим проект за 1 день.
Сравнение ручного и автоматического заказа
| Параметр | Ручной заказ | Автоматический заказ |
|---|---|---|
| Время на закупки в день | 3–4 часа | 15 минут (контроль) |
| Дефицит на складе | 12–15% | 2–3% |
| Издержки на срочные доставки | 5–7% от оборота | 0,5–1% |
| Ошибки при заказе | 5–8% | <1% |
Типичные ошибки при самостоятельной настройке
- Отсутствие блокировки повторных заказов — агент создаёт новый, пока предыдущий не подтверждён. - Порог без учёта времени поставки — при задержках товар не успевает прийти. - Игнорирование ошибок API — заказ не отправлен, а статус остался sent. Мы добавляем логирование и повторные попытки.Гарантируем стабильную работу: после ввода в эксплуатацию предоставляем поддержку на 30 дней. Опыт команды — 10+ лет на Битрикс. Получите консультацию и узнайте, как автоматизация закроет ваши проблемы с закупками.







