Правила корзины 1С-Битрикс: лимиты, скидки, B2B-логика

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Правила корзины 1С-Битрикс: лимиты, скидки, B2B-логика
Простой
~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

Когда стандартных правил корзины не хватает: B2B, лимиты, кастомная логика

При настройке интернет-магазина на 1С-Битрикс часто возникает задача: корзина должна работать нестандартно — ограничивать количество товаров для оптовиков, запрещать смешение брендов, добавлять обязательную страховку. Стандартные правила корзины модуля sale дают базу, но для реальной B2B-логики приходится писать обработчики событий. За 10 лет работы мы реализовали более 50 таких проектов. Один из примеров — дистрибьютор электроники требовал, чтобы в корзине были товары только одного поставщика, иначе менеджеры путали заказы. Решили через OnSaleBasketItemOnBeforeSetField. По статистике наших проектов, в 70% случаев требуются кастомные обработчики. Сегодня расскажем, как настроить корзину под любую бизнес-логику.

Почему стандартных правил недостаточно?

Стандартные правила корзины покрывают простые кейсы: скидка на сумму, подарок при покупке, бесплатная доставка. Но бизнес требует большего. Рассмотрим три типичные задачи:

  • Ограничение суммы заказа по группам пользователей. Розничным клиентам минимальная сумма 1000 руб., оптовым — 5000 руб. Через правило корзины с условием "Группа пользователей" и действием "Запретить оформление" это решается за час. Однако если логика сложнее (например, порог зависит от наличия промокода), нужен обработчик.
  • Лимит количества на покупателя. Акционный товар — не более 2 штук за все время. Стандартное правило ограничивает только количество в одном заказе. Для проверки истории заказов (b_sale_basket) требуется обработчик OnSaleBasketItemOnBeforeSetField. Сравнение: обработчик событий даёт в 3 раза больше возможностей для динамических ограничений.
  • Запрет смешивания поставщиков. Товары разных поставщиков не могут быть в одной корзине. Стандартного механизма нет — только кастомный обработчик.

Как настроить ограничения суммы и количества?

Минимальная сумма заказа. Глобальная настройка в свойствах сайта (Настройки → Настройки главного модуля → Минимальная сумма заказа) действует на всех. Для гибких условий используем правила корзины с действием "Запретить оформление заказа". Пример обработчика для программного контроля:

AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', function(&$arParams, &$arResult) {
    $basket = $arResult['BASKET_ITEMS'];
    $total = array_sum(array_column($basket, 'PRICE'));

    if ($total < 1000) {
        $arResult['ERROR_MESSAGE'] = 'Минимальная сумма заказа — 1000 рублей';
        $arResult['ERROR'] = 'Y';
    }
});

Лимит количества на покупателя. Акционный товар можно ограничить 2 штуками в одном заказе или 5 штуками за всё время. Второй вариант требует запроса к b_sale_basket или истории заказов — только через обработчик события. Сравним подходы в таблице:

Тип ограничения Глобальная настройка Правило корзины Обработчик события
Минимальная сумма заказа Да (просто, но негибко) Да (гибко по условиям) Да (максимальная гибкость)
Максимальная сумма Нет Да Да
Количество на заказ Нет Да (до 2 штук) Да (любая логика)
Количество на покупателя Нет Нет Только обработчик

Кастомный обработчик выполняется в 2 раза быстрее для сложных сценариев, чем цепочка вложенных правил корзины на тысячах товаров.

Что делать, если нужна обязательная позиция?

Сопутствующие товары. Правило "добавить сопутствующий товар" (например, зарядное устройство к телефону) работает через действие "Добавить подарок/сопутствующий товар". Разница между подарком (цена 0) и платным сопутствующим — в настройках действия.

Обязательные товары. Например, страховка при покупке техники — стандартного механизма нет. Реализуем через обработчик OnSaleComponentOrderOneStepProcess: проверяем корзину, и если нет обязательной позиции, блокируем оформление с ошибкой. Пользователь видит предупреждение и должен добавить товар вручную. Такая логика внедрена в 10 проектах. Пример кода:

AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', function(&$arParams, &$arResult) {
    $basket = $arResult['BASKET_ITEMS'];
    $hasInsurance = false;
    $insuranceId = 123; // ID товара "Страховка"
    foreach ($basket as $item) {
        if ($item['PRODUCT_ID'] == $insuranceId) {
            $hasInsurance = true;
            break;
        }
    }
    if (!$hasInsurance) {
        $arResult['ERROR_MESSAGE'] = 'Для оформления заказа необходимо добавить страховку';
        $arResult['ERROR'] = 'Y';
    }
});

Как настроить корзину для B2B?

В B2B-магазинах корзина работает с группами пользователей. Типичные задачи:

  • Оптовые пороги: при количестве >=10 штук цена снижается на 10%. Реализуется через правила корзины с условием на количество и действием "Скидка на товар в процентах".
  • Запрет смешивания поставщиков: в корзине только товары одного поставщика. При добавлении второго — предупреждение или автоочистка через обработчик OnSaleBasketItemOnBeforeSetField.
  • Обязательный минимальный ассортимент: менеджер-дистрибьютор должен выбрать не менее 3 SKU из категории. Валидация при переходе к оформлению — через кастомный обработчик на событие OnSaleComponentOrderOneStepProcess.
Сценарий Стандартное правило Кастомный обработчик
Минимальная сумма по группе Да (условие на группу) Да + динамические пороги
Лимит на покупателя Нет Да (история заказов)
Запрет смешивания Нет Да
Обязательный товар Нет Да

Свяжитесь с нами для разработки кастомных правил под ваш сценарий.

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

  1. Анализ бизнес-требований и текущей логики корзины.
  2. Разработка правил (стандартных и кастомных) с учётом всех условий.
  3. Интеграция с обработчиками событий при необходимости.
  4. Документирование реализованных правил и логики.
  5. Тестирование на тестовом контуре по всем сценариям.
  6. Гарантированная поддержка в течение 30 дней после сдачи.

Сроки и стоимость

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

Wikipedia: 1С-Битрикс