Setting up transit delivery from a 1C-Bitrix supplier's warehouse

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Configuring Transit Delivery from Supplier Warehouse 1С-Bitrix

Transit delivery is a dropshipping scheme: order arrives at site, store forwards it to supplier, supplier ships goods directly to customer. Store doesn't physically hold goods. In Bitrix this scheme requires: goods-supplier binding, mechanism for automatic order transmission, and status tracking from supplier.

Binding goods to suppliers

Create custom infoblock property SUPPLIER_ID of type "List" or "Binding to infoblock" — depends on whether suppliers are stored as infoblock elements or in separate table. If many suppliers or detailed data needed (API key, email, order format) — use separate bl_suppliers table.

Structure bl_suppliers: id, name, order_method (api/email/edi), api_url, api_key, email, order_template, active.

Goods-supplier binding: table bl_product_supplier with fields product_id, supplier_id, supplier_sku (supplier's article), price, lead_time_days.

Transmitting order to supplier

On payment (OnSaleOrderPaid) or manual status transition — determine supplier by basket goods and transmit order:

$basket = $order->getBasket();
$supplierOrders = [];

foreach ($basket as $item) {
    $supplierId = SupplierMap::getBySku($item->getProductId());
    $supplierOrders[$supplierId][] = [
        'sku'      => SupplierMap::getSupplierSku($item->getProductId()),
        'qty'      => $item->getQuantity(),
        'address'  => $deliveryAddress,
        'order_id' => $orderId,
    ];
}

foreach ($supplierOrders as $supplierId => $items) {
    $supplier = SupplierTable::getById($supplierId)->fetch();
    SupplierGateway::send($supplier, $items);
}

SupplierGateway::send() sends HTTP request to supplier API, forms letter, or XML for EDI — depending on order_method.

Receiving tracking number from supplier

Supplier sends tracking number back — via webhook to your site endpoint or API response. Create public handler /bitrix/supplier_webhook.php, which:

  1. Receives supplier_order_id, tracking_number, carrier
  2. Finds related Bitrix order by supplier_order_id via bl_supplier_orders table
  3. Writes tracking number to custom order fields (UF_TRACKING_NUMBER, UF_CARRIER)
  4. Sends customer email with tracking number via \Bitrix\Main\Mail\Event::send()
  5. Changes order status to "Shipped to delivery"

Deadline control

Agent every 6 hours checks orders to suppliers older than lead_time_days. If supplier didn't send tracking number in time — creates task for manager via CRM or sends notification to administrator.

What we configure

  • Tables bl_suppliers and bl_product_supplier with goods-supplier binding
  • Payment event handler with supplier routing logic
  • Class SupplierGateway with adapters for API/email/EDI
  • Webhook-endpoint to receive tracking numbers from suppliers
  • Agent for deadline control and overdue notifications