Настройка интервалов времени доставки 1С-Битрикс
Выбор временного интервала доставки — «с 10 до 14», «с 14 до 18», «с 18 до 22» — в 1С-Битрикс реализуется не через стандартные настройки служб доставки, а через свойства заказа или кастомную форму оформления. Стандартная служба доставки не имеет встроенного механизма слотов — это распространённое заблуждение.
Реализация через свойство заказа
Самый простой вариант — добавить свойство заказа с типом «Список»:
Магазин → Настройки → Свойства заказа → Добавить:
- Название: «Интервал доставки»
-
Код:
DELIVERY_TIME - Тип: Список
-
Значения:
10:00–14:00,14:00–18:00,18:00–22:00
Свойство привязывается к конкретной службе доставки через условие в компоненте оформления заказа. В стандартном sale.order.ajax свойство отображается при выборе нужной службы через JS-обработчик.
Динамическое управление слотами
Реальный сценарий: каждый слот имеет ограниченную вместимость — 10 заказов на интервал. Реализация через highload-блок:
| Поле | Тип | Описание |
|---|---|---|
UF_DATE |
Дата | Дата доставки |
UF_SLOT |
Строка | Интервал (10:00–14:00) |
UF_CAPACITY |
Число | Максимум заказов |
UF_BOOKED |
Число | Забронировано |
При выборе даты и слота в корзине — AJAX-запрос проверяет доступность:
$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'],
]);
После подтверждения заказа — инкремент UF_BOOKED в транзакции во избежание двойного бронирования.
Интеграция с интерфейсом оформления заказа
Для React/Vue-оформления заказа слоты загружаются через отдельный API-endpoint. Компонент отображает доступные слоты в виде кнопок или select — недоступные серые, исключены из выборки на сервере.
Сроки настройки
| Вариант | Срок |
|---|---|
| Статичный список через свойство заказа | 2–4 часа |
| Динамические слоты с ограничением вместимости | 1–2 дня |
| + интеграция с календарём курьеров | 2–4 дня |







