Налаштування безкоштовної доставки за умовами в 1С-Бітрікс
Безкоштовна доставка при виконанні умов — один з найефективніших інструментів підвищення середнього чека. Покупець докладає товари, щоб досягти порога. У 1С-Бітрікс це реалізується кількома способами залежно від складності умов.
Спосіб 1: Окрема служба з обмеженням за сумою
Найчистіший підхід. Створюємо службу доставки «Безкоштовна доставка» з нульовою ціною. В обмеженнях задаємо мінімальну суму замовлення.
Магазин → Налаштування → Служби доставки → Додати → Ручна (фіксована вартість) → Ціна: 0
Потім: [служба] → Обмеження → Додати обмеження → Сума замовлення → min: 3000
Цей спосіб працює через b_sale_delivery_restriction — при розрахунку доступних служб 1С-Бітрікс перевіряє обмеження та приховує службу, якщо умова не виконана.
Спосіб 2: Знижка 100% через маркетинг
Магазин → Маркетинг → Правила роботи з кошиком → Додати:
- Умова:
Вартість замовлення >= 3000 - Дія:
Знижка на доставку 100%
Застосовується до обраної покупцем служби. Мінус: 100% знижка застосується до будь-якої служби, навіть до експрес-доставки, яку ви не хочете робити безкоштовною.
Рішення: в правилі обмежуємо список служб, до яких застосовується знижка — «тільки стандартна доставка».
Складні умови: кілька критеріїв
Безкоштовна доставка тільки для зареєстрованих користувачів від 5000 гривень, або для всіх від 7000 гривень — таке не закривається стандартними обмеженнями. Реалізація через кастомний обробник:
public function isCompatible(\Bitrix\Sale\Shipment $shipment): bool
{
$order = $shipment->getOrder();
$price = $order->getPrice();
$userId = $order->getUserId();
// Зареєстрований користувач + від 5000
if ($userId > 0 && $price >= 5000) return true;
// Будь-хто + від 7000
if ($price >= 7000) return true;
return false;
}
Віджет «До безкоштовної доставки залишилося»
Це UX-елемент у кошику: «Додайте ще 1 200 ₽ і отримайте безкоштовну доставку». Не входить до стандартного шаблону 1С-Бітрікс — кастомізація компонента кошика.
// У шаблоні компонента кошика
$threshold = \Bitrix\Main\Config\Option::get('my_shop', 'free_delivery_threshold', 3000);
$currentSum = $arResult['PRICE'];
$remaining = max(0, $threshold - $currentSum);
if ($remaining > 0) {
echo 'До безкоштовної доставки залишилося: ' . \CCurrencyLang::CurrencyFormat($remaining, 'UAH');
}
Поріг зберігається в налаштуваннях модуля або в налаштуваннях сайту (b_option), а не в шаблоні — щоб менеджер міг змінювати його без розробника.
Прогрес-бар до безкоштовної доставки
Візуальний прогрес-бар замість текстового рядка конвертує краще. Реалізація — смужка заповнення у відсотках:
const threshold = 3000;
const current = parseFloat(document.getElementById('basket-sum').dataset.sum);
const pct = Math.min(100, Math.round((current / threshold) * 100));
document.getElementById('free-delivery-bar').style.width = pct + '%';
document.getElementById('free-delivery-remaining').textContent =
pct < 100 ? 'Ще ' + (threshold - current) + ' ₽' : 'Безкоштовна доставка!';
Прогрес-бар оновлюється при додаванні товарів до кошика через стандартну подію 1С-Бітрікс basket:update.
Безкоштовна доставка за промокодом
Ще один варіант — безкоштовна доставка як бонус до промокоду. Реалізація через правило маркетингу з умовою «Застосовано купон X» і дією «Знижка на доставку 100%». Купон створюється в розділі Маркетинг → Купони, прив'язується до правила кошика.
Обмеження по регіонах
Безкоштовна доставка тільки по Москві та СПб — поширений сценарій. Реалізація: служба «Безкоштовна доставка» обмежується двома місцезнаходженнями через вкладку «Місцезнаходження». По інших регіонах ця служба не показується, застосовується стандартна.
Терміни виконання
Базове налаштування (окрема служба або знижка через маркетинг) — 2–4 години. З віджетом «До безкоштовної доставки» та прогрес-баром — 1 робочий день. З промокодами та регіональними обмеженнями — 1–1.5 дня.







