Налаштування автоматичного замовлення товарів у поставщиків в 1С-Бітрікс
Автоматичне замовлення у поставщиків — це коли остаток товару падає нижче порога, система сама створює заявку поставщику без участі менеджера. Потребує: пороговані значення для кожного товару, привязку товарів до поставщиків, механізм створення та відправки замовлення. Все це будується поверх стандартних модулів Бітрікс.
Налаштування пороговие значень
Поріг перезамовлення задається для кожного товару. Два варіанти зберігання:
Варіант 1: користувацькі властивості інфоблока — REORDER_POINT (кількість, при якій замовляти) та REORDER_QTY (скільки замовляти). Задаються в карточці товару в адміністративному розділі.
Варіант 2: окрема таблиця bl_reorder_settings з полями product_id, reorder_point, reorder_qty, supplier_id. Дозволяє зберігати кілька поставщиків на один товар з пріоритетами.
Для автоматичного розрахунку пороговых значень використовуйте прогноз попиту з bl_sales_forecast: reorder_point = avg_daily_sales × lead_time_days × 1.2 (20% страховий запас).
Агент моніторингу остатків
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();';
}
Умова NOT EXISTS запобігає дублюванню — не створюємо новий заказ, якщо вже є активний.
Відправка замовлення поставщику
SupplierOrderService::create() створює запис у bl_supplier_orders та відправляє заявку способом, налаштованим для даного поставщика:
-
Email: формує PDF або Excel з позиціями через
\PHPExcelабо стандартні шаблони Бітрікс -
API: HTTP-запит на endpoint поставщика через
\Bitrix\Main\Web\HttpClient - EDI: формує ORDERS-повідомлення у форматі EDIFACT/XML та відправляє на FTP або по API
class SupplierOrderService
{
public static function create(int $supplierId, int $productId, float $qty): void
{
$orderId = SupplierOrderTable::add([
'SUPPLIER_ID' => $supplierId,
'PRODUCT_ID' => $productId,
'QTY' => $qty,
'STATUS' => 'pending',
'CREATED_AT' => new \Bitrix\Main\Type\DateTime(),
])->getId();
$supplier = SupplierTable::getById($supplierId)->fetch();
match($supplier['ORDER_METHOD']) {
'api' => self::sendViaApi($supplier, $orderId, $productId, $qty),
'email' => self::sendViaEmail($supplier, $orderId, $productId, $qty),
'edi' => self::sendViaEdi($supplier, $orderId, $productId, $qty),
};
SupplierOrderTable::update($orderId, ['STATUS' => 'sent']);
}
}
Приймання підтвердження та надходження товару
Поставщик підтверджує замовлення та вказує очікувану дату поставки. Якщо у поставщика є API з вебхуками — оновлюйте статус автоматично. Інакше — менеджер вручну оновлює статус в адміністративному розділі.
При фактичному надходженні товару менеджер створює документ надходження через «Склад → Документи → Надходження» у b_catalog_store_document. Це автоматично збільшує остатки у b_catalog_store_product.
Що налаштовуємо
- Таблиці
bl_reorder_settingsтаbl_supplier_ordersз потрібними статусами - Агент
AutoReorderAgentіз логікою порівняння остатків та пороговых значень - Клас
SupplierOrderServiceз адаптерами під email, API, EDI - Адміністративний інтерфейс перегляду активних замовлень поставщикам
- Сповіщення менеджеру про створені автозакази та перевищені строки підтвердження







