Настройка корзины интернет-магазина 1С-Битрикс
Корзина в 1С-Битрикс — не просто список товаров. Это объект \Bitrix\Sale\Basket, связанный с заказом, скидками, правилами доставки и пользовательской сессией. Грамотная настройка корзины напрямую влияет на конверсию: от скорости загрузки мини-корзины до логики слияния при авторизации. Разберём ключевые механики, правила скидок и приёмы кросс-продаж.
Компонент sale.basket.basket
Стандартный компонент sale.basket.basket отвечает за полную страницу корзины. Его параметры задают поведение:
- COLUMNS_LIST — какие колонки отображать (изображение, название, количество, цена, удалить).
- HIDE_COUPON — скрыть поле купона, если промо-акции не используются.
- QUANTITY_FLOAT — разрешить дробное количество (для весовых товаров).
- PRICE_VAT_SHOW_VALUE — показывать НДС отдельной строкой.
- AUTO_CALCULATION — пересчитывать корзину при каждом изменении количества без перезагрузки страницы.
Компонент работает через AJAX: при изменении количества отправляется запрос к \Bitrix\Sale\Compatible\BasketCompatibility или напрямую к \Bitrix\Sale\Basket::refresh(), пересчитываются скидки, обновляется итог.
Отложенные товары — встроенная функция корзины. Товар со свойством DELAY = Y не участвует в расчёте стоимости и доставки, но остаётся в b_sale_basket. Переключение между отложенным и активным состоянием выполняется методом \Bitrix\Sale\BasketItem::setField('DELAY', 'Y').
Мини-корзина
Мини-корзина (sale.basket.basket.line) обычно размещается в шапке сайта. Она показывает количество товаров и сумму. Основная проблема — производительность. Компонент по умолчанию обращается к базе при каждом хите. На высоконагруженных проектах это решается:
- Кэшированием на стороне клиента — данные корзины сохраняются в
localStorageи обновляются только при действиях пользователя. - Подгрузкой через отложенный AJAX-запрос после загрузки страницы (
lazy load). - Использованием
composite cacheс исключением блока корзины из кэша через\Bitrix\Main\Page\Frame.
Правила скидок корзины
Скидки в Битрикс делятся на скидки каталога (применяются к товару до корзины) и правила корзины (sale.discount). Правила корзины — мощный инструмент, работающий на уровне заказа.
Правило корзины состоит из условий и действий:
Условия — что должно выполниться:
- Сумма корзины больше N.
- В корзине есть товар из раздела X.
- Количество товаров определённого свойства больше Y.
- Купон активирован.
- Пользователь принадлежит группе Z.
Действия — что происходит при выполнении условий:
- Скидка N% на весь заказ.
- Скидка на конкретный товар или раздел.
- Подарок (добавление товара с нулевой ценой).
- Бесплатная доставка (через флаг
DELIVERY_DISCOUNT).
Порядок применения скидок задаётся через приоритеты. Скидки с одинаковым приоритетом применяются совместно; с разным — последовательно, причём каждая следующая рассчитывается от уже скидочной цены. Флаг «Прекратить применение» останавливает цепочку — полезно для эксклюзивных акций.
Частая ошибка — конфликт скидок каталога и корзины. По умолчанию Битрикс не суммирует их: если товар уже имеет скидку каталога, правило корзины может не применяться. Поведение задаётся в настройках модуля sale → Тип пересчёта скидок.
Кросс-продажи в корзине
Кросс-продажи (cross-sell) на странице корзины повышают средний чек. В Битрикс реализуются несколькими способами:
Через свойство товара «Сопутствующие» — привязка товаров на уровне инфоблока. Компонент catalog.recommended.products выводит их рядом с корзиной. Просто в настройке, но требует ручного заполнения связей.
Через автоматические рекомендации — модуль bigdata (Персонализация) анализирует поведение пользователей и подбирает товары на основе коллаборативной фильтрации. Настраивается в разделе Маркетинг → Персонализация. Работает только при достаточном объёме данных (минимум несколько тысяч заказов).
Через правила корзины с подарком — создаёте правило: «при покупке товара из раздела А — предложить товар из раздела Б со скидкой 50%». Пользователь видит предложение прямо в корзине и может принять его одним кликом.
Для максимальной эффективности кросс-продажи комбинируются: автоматические рекомендации для основной массы товаров и ручные связи для маржинальных позиций.
Слияние корзины при авторизации
Когда неавторизованный пользователь добавляет товары в корзину, они привязаны к FUSER_ID — анонимному идентификатору из куки. После авторизации Битрикс вызывает \Bitrix\Sale\Fuser::getIdByUserId() и выполняет слияние:
- Товары из анонимной корзины переносятся в корзину пользователя.
- Если товар уже есть в обеих корзинах — количество суммируется.
- Скидки пересчитываются для объединённой корзины.
Слияние происходит автоматически через обработчик события OnAfterUserLogin. Проблемы возникают, когда кастомная авторизация (SSO, внешний OAuth) обходит стандартный механизм. В этом случае нужно явно вызвать \Bitrix\Sale\Fuser::update() для объединения идентификаторов.
Настройка шагов оформления
Переход из корзины к оформлению заказа контролируется компонентом sale.order.ajax. Его можно настроить на пошаговое оформление (отдельные страницы для доставки, оплаты, подтверждения) или на одностраничное (all-in-one). Практика показывает, что одностраничное оформление даёт конверсию на 15-20% выше, но требует больше работы с валидацией на клиенте.
Ключевые параметры: DELIVERY_TO_PAYSYSTEM — связь служб доставки с платёжными системами, SHOW_NOT_CALCULATED_DELIVERIES — показывать ли доставки, для которых не удалось рассчитать стоимость.







