Блог Горошко Андрея 1C-Битрикс E-commerce в D7: Управление корзиной (Bitrix\Sale\Basket)

E-commerce в D7: Управление корзиной (Bitrix\Sale\Basket)

 Работа с корзиной — основа любого интернет-магазина.

Старые методы CSaleBasket ушли в прошлое. В D7 используется мощная объектная модель Bitrix\Sale\Basket, которая автоматически учитывает скидки, правила работы с корзиной и привязку к пользователю.

1. Получение корзины

Чтобы работать с корзиной, нужно получить её объект для текущего пользователя (FUSER_ID) и текущего сайта.

use Bitrix\Main\Loader;
use Bitrix\Sale;

Loader::includeModule("sale");
Loader::includeModule("catalog");

$siteId = \Bitrix\Main\Context::getCurrent()->getSite();
$fUserId = Sale\Fuser::getId(); // Получаем ID покупателя (даже если он не авторизован)

// Загружаем корзину
$basket = Sale\Basket::loadItemsForFUser($fUserId, $siteId);

2. Добавление товара

$productId = 123; // ID товара
$quantity = 2;    // Количество

// Проверяем, есть ли уже этот товар в корзине
if ($item = $basket->getExistsItem('catalog', $productId)) {
    // Если есть, увеличиваем количество
    $item->setField('QUANTITY', $item->getQuantity() + $quantity);
} else {
    // Если нет, создаем новый
    $item = $basket->createItem('catalog', $productId);
    $item->setFields([
        'QUANTITY' => $quantity,
        'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
        'LID' => $siteId,
        'PRODUCT_PROVIDER_CLASS' => '\Bitrix\Catalog\Product\Basket', // Важно для каталога!
    ]);
}

// Сохраняем изменения в БД
$result = $basket->save();

if ($result->isSuccess()) {
    echo "Товар добавлен!";
} else {
    print_r($result->getErrorMessages());
}

Важно: PRODUCT_PROVIDER_CLASS отвечает за связь с модулем торгового каталога (проверка остатков, актуализация цен).

3. Изменение и удаление

// Перебор товаров
foreach ($basket as $basketItem) {
    if ($basketItem->getProductId() == 123) {
        
        // Изменение количества
        $basketItem->setField('QUANTITY', 5);
        
        // Удаление товара
        // $basketItem->delete();
    }
}

// Не забываем сохранить!
$basket->save();

4. Получение общей стоимости

echo "Стоимость товаров: " . $basket->getPrice(); // С учетом скидок
echo "Вес: " . $basket->getWeight();
echo "Кол-во позиций: " . count($basket);

Вывод:
Класс Bitrix\Sale\Basket предоставляет удобный интерфейс для любых операций с товарами покупателя.

Главное правило: после любых изменений (добавление, setField, delete) обязательно вызывайте метод save(), чтобы записать изменения в базу.

Bitrix\Sale\Basket, корзина Битрикс D7, добавление в корзину API, обновление количества, FUSER_ID, работа с корзиной, интернет-магазин.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Интеграция B2B-портала на 1С-Битрикс с учетной системой 1С:ERP Управление предприятиемИнтеграция B2B-портала на 1С-Битрикс с учетной системой 1С:ERP Управление предприятием

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Интеграция

Верстка блока подписки на рассылку с интеграцией с email-сервисамиВерстка блока подписки на рассылку с интеграцией с email-сервисами

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка блока подписки на рассылку с интеграцией с email-сервисами» гарантирует

Редизайн страницы сравнения товаров с удобным мобильным свайпомРедизайн страницы сравнения товаров с удобным мобильным свайпом

Миграция сайта на платформу 1С-Битрикс или комплексный редизайн интерфейса — это стратегический шаг для устранения технических ограничений, защиты от санкционных рисков и масштабирования онлайн-продаж. Услуга «Редизайн страницы сравнения товаров с