Настройка автоматического заказа товаров у поставщиков 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка автоматического заказа товаров у поставщиков 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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