Настройка бесплатной доставки по условиям в 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка бесплатной доставки по условиям в 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • 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
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Настройка бесплатной доставки по условиям на 1С-Битрикс

Бесплатная доставка при заказе от N рублей — классический приём для повышения среднего чека. Но как только бизнес требует более гибких условий: бесплатно только для акционных товаров, для новых клиентов, по промокоду, с разными порогами по городам — стандартные ограничения 1С-Битрикс перестают закрывать задачу. Мы — команда разработчиков с 10+ летним стажем в Битрикс — реализовали более 50 проектов с кастомной логистикой. На примерах покажем, как настроить бесплатную доставку по нестандартным правилам и что важно учесть, чтобы не сломать корзину.

Почему стандартных ограничений доставки в Битрикс не хватает?

Стандартный механизм Битрикс позволяет установить только одно ограничение: минимальная сумма заказа для всех клиентов. Если нужно дифференцировать по группам пользователей, типам товаров или промокодам — приходится писать кастомные обработчики. В реальных проектах мы сталкивались с 20+ вариантами условий, которые не покрываются коробкой.

Как настроить бесплатную доставку по стандартному ограничению суммы?

В административной части для каждого обработчика доставки: «Ограничения» → «По стоимости заказа» → установить «Минимальная сумма заказа» = 0, «Максимальная» = пусто. Это подключит метод для любой суммы.

Для бесплатной доставки создаётся отдельный экземпляр обработчика (например, «СДЭК бесплатно») с нулевой ценой и ограничением «сумма заказа от 5000 руб.»:

// Обработчик с фиксированной нулевой ценой
class FreeDeliveryWrapper extends \Bitrix\Sale\Delivery\Services\Base
{
    protected function calculateConcrete(
        \Bitrix\Sale\Shipment $shipment
    ): \Bitrix\Sale\Delivery\CalculationResult {
        $result = new \Bitrix\Sale\Delivery\CalculationResult();
        $result->setDeliveryPrice(0);
        $result->setPeriodDescription('2–5 дней');
        return $result;
    }
}

Ограничение по сумме настраивается через стандартный UI. Порог суммы для бесплатной доставки лучше вынести в настройки обработчика — чтобы менять без правки кода. Подробнее о создании обработчиков доставки читайте в документации.

Как реализовать бесплатную доставку только для определённых товаров?

Задача: доставка бесплатна, если в корзине есть товар из раздела «Акционные» или товар с определённым свойством.

class ConditionalFreeDelivery extends \Bitrix\Sale\Delivery\Services\Base
{
    public static function isCompatible(\Bitrix\Sale\Shipment $shipment): bool
    {
        $basket = $shipment->getOrder()->getBasket();

        foreach ($basket as $item) {
            $productId = $item->getProductId();
            // Проверяем свойство товара FREE_DELIVERY = Y
            $props = \CIBlockElement::GetProperty(
                $item->getField('MODULE'),
                $productId,
                [],
                ['CODE' => 'FREE_DELIVERY']
            )->Fetch();

            if ($props && $props['VALUE'] === 'Y') {
                return true;
            }
        }

        return false;
    }

    protected function calculateConcrete(
        \Bitrix\Sale\Shipment $shipment
    ): \Bitrix\Sale\Delivery\CalculationResult {
        $result = new \Bitrix\Sale\Delivery\CalculationResult();
        $result->setDeliveryPrice(0);
        return $result;
    }
}

Как настроить бесплатную доставку для новых клиентов?

Если нужно предоставить бесплатную доставку только тем, кто оформляет заказ впервые, используйте событие OnSaleOrderSaved и флаг в заказе. В обработчике ограничения проверяйте этот флаг. Алгоритм: при создании заказа проверяем историю заказов пользователя; если заказов не было — устанавливаем пользовательский флаг. В обработчике доставки проверяем флаг и при его наличии делаем цену нулевой.

Как настроить бесплатную доставку по промокоду?

В корзине Битрикс можно применить промокод, который влияет на стоимость доставки. Реализуется через кастомный обработчик скидок на доставку или через свойство корзины. Обработчик доставки должен проверять наличие купона с определённым типом и обнулять цену.

Отображение прогресса до бесплатной доставки

В корзине показываем: «До бесплатной доставки осталось 1 230 руб.». Это не фича Битрикс из коробки — реализуется на уровне шаблона компонента корзины.

// В шаблоне компонента
$threshold    = 5000; // порог бесплатной доставки
$basketTotal  = $APPLICATION->IncludeComponent('bitrix:sale.basket.basket', '', ['GET_BASKET_TOTAL' => 'Y'], false, ['HIDE_ICONS' => 'Y']);
$currentTotal = $GLOBALS['BASKET_TOTAL'] ?? 0;

$remaining = max($threshold - $currentTotal, 0);
if ($remaining > 0) {
    echo 'До бесплатной доставки: ' . \CCurrencyLang::CurrencyFormat($remaining, 'RUB');
} else {
    echo 'Доставка бесплатна!';
}

Значение $threshold лучше получать из настроек обработчика доставки, а не хардкодить в шаблоне — при изменении порога нужно обновить только одно место.

Кейс из нашей практики

Магазин спортивного питания: бесплатная доставка от 3000 руб. для Москвы и от 5000 руб. для регионов. Стандартными средствами Битрикс это не решается одним обработчиком — разные пороги для разных зон. Решение: два экземпляра FreeDeliveryWrapper с разными настройками порога и ограничениями по зонам. Дополнительно настроили прогресс-бар, который показывает остаток до бесплатной доставки с учётом зоны клиента.

Что входит в настройку бесплатной доставки?

Этап Состав работ
1. Анализ Аудит текущей схемы доставки, выявление нестандартных условий
2. Проектирование Разработка архитектуры обработчиков, ограничений, интеграций
3. Разработка Написание кастомных классов, настройка свойств и ограничений
4. Тестирование Проверка всех сценариев: сумма, товары, зоны, промокоды
5. Документирование Передача документации и обучение менеджеров работе с доставкой

Типичные ошибки при настройке

Ошибка Последствие Как избежать
Хардкод порога в шаблоне Нужно править код при изменении Выносить в настройки обработчика
Не учтены несколько зон Клиенты из одного региона видят неверные условия Создавать отдельные обработчики с ограничениями по зонам
Отсутствие тестирования с купонами Промокоды не сбрасывают доставку Проверять интеграцию с корзиной и скидками

Мы гарантируем стабильную работу схемы доставки на всех этапах. Свяжитесь с нами для консультации по вашему проекту. Закажите настройку доставки под ваши условия — мы предложим оптимальное решение с учётом специфики бизнеса. Получите индивидуальный расчёт сроков и стоимости, заполнив форму на сайте.

Сроки

Состав Срок
Стандартное ограничение по сумме 0,5 дня
+ Прогресс-бар «до бесплатной доставки» +1 день
+ Условия по товарам или зонам +1–2 дня