Перейти к содержимому

Корзина в 1С-Битрикс - добавление товара, количество, пересчёт

Корзина - подтема на 215 вопросов из собранных. Здесь собраны решения по работе с ней из кода.

Что общего у этих задач

Корзина привязана не к пользователю, а к фиксированному покупателю. У гостя это запись, созданная по куке, у авторизованного - своя. Смена авторизации переносит содержимое, и потерянная корзина почти всегда объясняется этим переносом, а не ошибкой в коде.

Цена позиции берётся у провайдера, а не задаётся при добавлении. Провайдер каталога подтягивает цену, название и вес по идентификатору товара. Своя цена живёт только с флагом ручной стоимости, иначе её затрёт ближайший пересчёт.

Корзина и заказ - разные объекты. Заказ забирает корзину при создании, и после сохранения её строки принадлежат уже заказу. Поэтому для покупки в один клик берут новую корзину, а не корзину покупателя.

Решения подтемы

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

Почему корзина очищается при входе на сайт?

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

Можно ли добавить товар в корзину с конкретного склада?

Склад указывается не у позиции корзины, а у отгрузки заказа. В корзине хранится количество, а распределение по складам происходит при создании отгрузки.

Как посчитать итог корзины со скидками?

Через объект заказа: правила корзины применяются на пересчёте заказа, а не самой корзины. Сумма по позициям без этого шага даст цену без скидок.

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

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

Связанные темы

Первоисточники