К статье
Практический материал

Торговля и Склад · 10 мин

Как настроить корзину в 1С-Битрикс

Настройка корзины в 1С-Битрикс: компонент sale.basket.basket, свойства товаров, скидки, доставка и типичные ошибки. Практическое руководство для администраторов.

Корзина в 1С-Битрикс — это не отдельная страница, а связка компонентов, настроек модуля «Интернет-магазин» и шаблона сайта. Корректная работа корзины зависит от трёх вещей: правильно размещённого компонента sale.basket.basket, настроенных типов цен и складского учёта, а также корректных правил скидок. Если хотя бы один элемент настроен неправильно, покупатель увидит пустую корзину, неверную цену или ошибку при оформлении заказа.

Материал рассчитан на администраторов и контент-менеджеров, которые настраивают магазин через административную панель без правки PHP-кода. Все действия выполняются в разделах «Магазин» и «Настройки», а также в визуальном редакторе страниц. Перед началом убедитесь, что у вашей учётной записи есть права на управление модулем «Интернет-магазин» и настройку компонентов.

Отдельно стоит понимать различие редакций: полноценная корзина с оформлением заказа доступна в редакциях, где присутствует модуль «Интернет-магазин» (sale). В редакции «Старт» модуля нет, и корзину придётся реализовывать сторонними средствами — это частая причина «неработающей» корзины у начинающих пользователей.

Проверка предварительных условий

Прежде чем размещать компонент корзины, убедитесь, что базовая инфраструктура магазина готова. Откройте раздел «Настройки → Модули» и проверьте, что модуль «Интернет-магазин (sale)» установлен. Затем перейдите в «Магазин → Настройки → Типы цен» и убедитесь, что создан хотя бы один базовый тип цены и он привязан к группам пользователей, включая неавторизованных посетителей.

Второе условие — каталог товаров. Инфоблок каталога должен быть помечен как торговый каталог в настройках модуля «Торговый каталог», а у товаров должны быть заполнены цены и, при включённом складском учёте, остатки. Товар без цены либо не добавится в корзину, либо добавится с нулевой стоимостью — в зависимости от настроек.

Создание страницы корзины и размещение компонента

Создайте в структуре сайта раздел, например /personal/cart/, и добавьте в него страницу index.php. Откройте страницу в визуальном редакторе и разместите компонент «Корзина» (sale.basket.basket) из группы «Магазин». Это основной компонент, который выводит список товаров, позволяет менять количество, применять купоны и удалять позиции.

В параметрах компонента обратите внимание на несколько ключевых настроек. Параметр «Путь к странице оформления заказа» должен указывать на страницу с компонентом оформления заказа (обычно /personal/order/make/ с компонентом sale.order.ajax). Опция «Использовать AJAX» делает обновление корзины без перезагрузки страницы — включайте её, если шаблон это поддерживает. Режим «Отложенные товары» позволяет покупателю переносить позиции в список «Отложено».

После сохранения откройте страницу в публичной части под обычным посетителем, добавьте товар из каталога и проверьте, что он появляется в корзине. Если корзина пуста, хотя товар добавлялся, чаще всего проблема в сессиях, куках или в конфликте шаблона с AJAX-режимом.

Порядок действий
  1. 1
    Создайте раздел /personal/cart/ и страницу index.php в нём
  2. 2
    Разместите компонент sale.basket.basket через визуальный редактор
  3. 3
    Укажите в параметрах путь к странице оформления заказа
  4. 4
    Включите AJAX-режим, если шаблон его поддерживает
  5. 5
    Добавьте тестовый товар и проверьте отображение в корзине
  6. 6
    Проверьте изменение количества, удаление и применение купона

Настройка кнопки «В корзину» и мини-корзины

Добавление товара в корзину происходит из каталога: в шаблоне компонента catalog или catalog.element используется ссылка с параметром action=ADD2BASKET и идентификатором товара, либо AJAX-вызов через JS-библиотеку Битрикса. Если кнопка «Купить» не работает, проверьте, что в настройках инфоблока каталога включена опция «Является торговым каталогом» и у товара есть доступная цена.

Мини-корзина в шапке сайта реализуется компонентом sale.basket.basket.line. Он показывает количество товаров и сумму, а по клику ведёт на страницу корзины. Разместите его в header шаблона сайта и укажите путь к полной корзине. Учтите, что при включённом композитном кэше число товаров в мини-корзине может отображаться с задержкой — для таких блоков используется динамическая область шаблона.

Цены, скидки и купоны в корзине

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

Купоны создаются внутри правила работы с корзиной на вкладке «Купоны». Чтобы поле ввода купона отображалось, в параметрах компонента корзины должна быть включена соответствующая опция. Проверяйте сроки действия купонов и привязку к группам пользователей: купон, ограниченный зарегистрированными покупателями, не сработает у гостя без объяснения причин.

Типичные ошибки
01
Несколько правил скидок без приоритетов — скидки суммируются или отменяют друг друга непредсказуемо
02
Купон без срока действия и ограничений — им могут воспользоваться неограниченное число раз
03
Скидка на товар, у которого цена уже со скидкой, — итоговая цена ниже себестоимости
04
Отключённый показ поля купона в компоненте — покупатели не могут ввести код

Доставка, оплата и связь с оформлением заказа

Корзина сама по себе не рассчитывает доставку — это делает компонент оформления заказа sale.order.ajax. Однако корректность расчёта зависит от настроек в разделе «Магазин → Настройки → Службы доставки». Создайте хотя бы одну службу доставки, привяжите её к местоположениям и укажите ограничения по весу и сумме заказа. У товаров в каталоге должны быть заполнены вес и габариты, иначе расчёт стоимости доставки будет некорректным.

Платёжные системы настраиваются в разделе «Магазин → Настройки → Платёжные системы» и привязываются к типам плательщиков. Проверьте, что хотя бы одна платёжная система доступна для каждого типа плательщика (физическое и юридическое лицо), иначе на шаге оплаты покупатель увидит пустой список.

Типы плательщиков и свойства заказа задаются в «Магазин → Настройки → Список типов плательщиков» и «Свойства заказа». Минимальный набор для физического лица: ФИО, телефон или email, адрес доставки. Свойства должны быть привязаны к типу плательщика, иначе они не появятся на форме оформления.

Контрольные точки

Как проверить результат

Добавление товара
Норма

Товар появляется в корзине с верной ценой и количеством

Тревожный признак

Корзина пуста или цена отличается от каталога

Изменение количества
Норма

Сумма пересчитывается сразу, скидки применяются корректно

Тревожный признак

Сумма не меняется или скидка пропадает

Оформление заказа
Норма

Доступны способы доставки и оплаты, заказ создаётся

Тревожный признак

Пустой список доставки/оплаты или ошибка на последнем шаге

Типичные проблемы и их диагностика

Самая распространённая жалоба — «товар не добавляется в корзину». Причины по частоте: у товара нет цены доступного типа, товар деактивирован или у него нулевой остаток при включённом контроле остатков, ошибка в шаблоне кнопки покупки, проблемы с сессиями PHP на сервере. Проверяйте по цепочке: цена → остаток → активность → работа кнопки в консоли браузера.

Вторая типичная ситуация — корзина «обнуляется» при переходе между страницами. Это почти всегда признак проблем с куками или сессиями: некорректные настройки домена кук в «Настройки → Главный модуль», работа сайта одновременно по www и без www без редиректа, либо агрессивное кэширование на стороне хостинга или CDN.

Третья группа проблем — расхождение цен между каталогом и корзиной. Обычно виноваты правила скидок с неочевидными условиями, разные типы цен для авторизованных и гостей, либо включённый НДС, который в каталоге показан в цене, а в корзине выделен отдельной строкой.

Маршрут решения

Как выбрать действие

Товар не добавляется в корзинуПроверьте цену, остаток и активность товара, затем консоль браузера на ошибки JS
Корзина пустеет при переходе между страницамиПроверьте настройки домена кук и склейку www/без www
Цена в корзине отличается от каталогаПроверьте правила скидок, типы цен для групп пользователей и настройки НДС
Не отображается доставка или оплатаПроверьте привязку служб к местоположениям и платёжных систем к типам плательщиков

Ограничения и когда нужен разработчик

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

К разработчику придётся обратиться, если нужны: нестандартный пересчёт цен по сложной формуле, интеграция корзины с внешними сервисами, кастомная логика комплектации товаров, существенная переделка шаблона компонента. Правка файлов компонента напрямую в папке /bitrix/components/ недопустима — изменения будут стёрты при обновлении. Шаблоны копируются в папку шаблона сайта, бизнес-логика выносится в обработчики событий.

Итог

Что важно запомнить

Рабочая корзина в 1С-Битрикс — это компонент sale.basket.basket на отдельной странице, корректные типы цен и остатки, продуманные правила скидок и настроенные службы доставки с платёжными системами. Любые изменения проверяйте полным тестовым заказом от добавления товара до оплаты.

Частые вопросы

Почему корзина показывает старое количество товаров после добавления?

Чаще всего причина в композитном или файловом кэше: блок мини-корзины закэширован вместе со страницей. Вынесите мини-корзину в динамическую область шаблона и сбросьте кэш. Также проверьте, нет ли кэширования на уровне хостинга или CDN.

Можно ли разрешить покупку без регистрации?

Да. В настройках модуля «Интернет-магазин» включите опцию разрешения оформления заказа без регистрации, а в параметрах компонента sale.order.ajax — автоматическую регистрацию пользователя при оформлении. Убедитесь, что группа неавторизованных пользователей имеет доступ к типу цены.

Как добавить поле купона, если его нет в корзине?

Откройте параметры компонента sale.basket.basket и включите опцию показа поля ввода купона. Затем проверьте, что в разделе «Магазин → Скидки» создано правило работы с корзиной с активными купонами — без правила ввод кода ни к чему не приведёт.

Товар добавляется в корзину с нулевой ценой — в чём причина?

У товара не заполнена цена для типа цен, доступного текущему пользователю, либо в настройках торгового каталога разрешена покупка при отсутствии цены. Заполните базовую цену и проверьте права групп пользователей на типы цен в разделе «Магазин → Настройки → Типы цен».

Как перенести настройки корзины на другой сайт?

Правила скидок, типы цен и службы доставки можно выгрузить через встроенные механизмы экспорта в соответствующих разделах модуля «Интернет-магазин». Настройки компонентов переносятся вместе со страницами и шаблоном сайта. После переноса обязательно проверьте привязки к инфоблокам и местоположениям — они могут отличаться.

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

Проверьте условия правила работы с корзиной: ограничения по разделам, свойствам товара, группам пользователей и срокам действия. Также посмотрите приоритеты правил — правило с более высоким приоритетом и включённой опцией прекращения применения скидок блокирует остальные.