Setting up delivery time intervals in 1C-Bitrix

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

Delivery Time Slot Configuration in 1C-Bitrix

Selecting a delivery time window — "10:00–14:00", "14:00–18:00", "18:00–22:00" — is not implemented through standard delivery service settings in 1C-Bitrix but rather via order properties or a custom checkout form. A standard delivery service does not have a built-in slot mechanism — this is a widespread misconception.

Implementation via Order Property

The simplest option is to add an order property of type "List":

Store → Settings → Order Properties → Add:

  • Name: "Delivery Time Slot"
  • Code: DELIVERY_TIME
  • Type: List
  • Values: 10:00–14:00, 14:00–18:00, 18:00–22:00

The property is linked to a specific delivery service via a condition in the checkout component. In the standard sale.order.ajax component, the property is displayed when the required service is selected via a JS handler.

Dynamic Slot Management

A real-world scenario: each slot has limited capacity — 10 orders per time window. Implementation via a highload block:

Field Type Description
UF_DATE Date Delivery date
UF_SLOT String Time window (10:00–14:00)
UF_CAPACITY Number Maximum orders
UF_BOOKED Number Booked count

When a date and slot are selected in the cart — an AJAX request checks availability:

$entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity('DeliverySlots');
$slots = $entity::getList([
    'filter' => [
        'UF_DATE' => $date,
        '<=UF_BOOKED' => 'UF_CAPACITY - 1',
    ],
    'select' => ['UF_SLOT', 'UF_CAPACITY', 'UF_BOOKED'],
]);

After the order is confirmed — UF_BOOKED is incremented within a transaction to prevent double-booking.

Integration with the Checkout Interface

For React/Vue checkout, slots are loaded via a dedicated API endpoint. The component renders available slots as buttons or a select — unavailable slots are greyed out and excluded from the server-side result set.

Setup Timeline

Option Timeline
Static list via order property 2–4 hours
Dynamic slots with capacity limits 1–2 days
+ Integration with courier calendar 2–4 days