Налаштування автоматичного замовлення товарів у постачальників 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування автоматичного замовлення товарів у постачальників 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування автоматичного замовлення товарів у поставщиків в 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
  • Адміністративний інтерфейс перегляду активних замовлень поставщикам
  • Сповіщення менеджеру про створені автозакази та перевищені строки підтвердження