Получить состав корзины заказа и вывести позиции
Получение позиций корзины заказа через Order->getBasket() с информацией о товарах, ценах и количестве.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Получение состава корзины заказа с детальной информацией о позициях. Используйте в детальных страницах заказов, печатных формах, уведомлениях для отображения списка товаров.
use Bitrix\Main\Loader;
use Bitrix\Sale\Order;
/**
* Получить позиции корзины заказа
* @param int $orderId ID заказа
* @return array Массив позиций корзины
*/
function getOrderBasketItems($orderId) {
if (!Loader::includeModule('sale')) {
return [];
}
$order = Order::load($orderId);
if (!$order) {
return [];
}
$basket = $order->getBasket();
$items = [];
foreach ($basket as $basketItem) {
$item = [
'ID' => $basketItem->getId(),
'PRODUCT_ID' => $basketItem->getProductId(),
'NAME' => $basketItem->getField('NAME'),
'QUANTITY' => $basketItem->getQuantity(),
'PRICE' => $basketItem->getPrice(),
'CURRENCY' => $basketItem->getCurrency(),
'SUM' => $basketItem->getFinalPrice(),
'DISCOUNT_PRICE' => $basketItem->getDiscountPrice(),
'VAT_RATE' => $basketItem->getVatRate(),
'VAT_INCLUDED' => $basketItem->isVatIncluded() ? 'Y' : 'N',
'PROPERTIES' => []
];
// Получаем свойства позиции
$propertyCollection = $basketItem->getPropertyCollection();
foreach ($propertyCollection as $property) {
$item['PROPERTIES'][] = [
'CODE' => $property->getField('CODE'),
'NAME' => $property->getField('NAME'),
'VALUE' => $property->getField('VALUE')
];
}
$items[] = $item;
}
return $items;
}
/**
* Получить общую информацию о корзине
* @param int $orderId ID заказа
* @return array ['items_count' => int, 'total_sum' => float, 'currency' => string]
*/
function getOrderBasketSummary($orderId) {
if (!Loader::includeModule('sale')) {
return ['items_count' => 0, 'total_sum' => 0, 'currency' => ''];
}
$order = Order::load($orderId);
if (!$order) {
return ['items_count' => 0, 'total_sum' => 0, 'currency' => ''];
}
$basket = $order->getBasket();
return [
'items_count' => $basket->count(),
'total_sum' => $order->getPrice(),
'currency' => $order->getCurrency()
];
}
Usage:
// Получить все позиции заказа
$items = getOrderBasketItems(12345);
foreach ($items as $item) {
echo $item['NAME'] . ' - ' . $item['QUANTITY'] . ' шт.';
echo 'Цена: ' . $item['PRICE'] . ' ' . $item['CURRENCY'];
echo 'Сумма: ' . $item['SUM'] . ' ' . $item['CURRENCY'];
// Вывести свойства (размер, цвет и т.д.)
foreach ($item['PROPERTIES'] as $prop) {
echo $prop['NAME'] . ': ' . $prop['VALUE'];
}
}
// Получить общую информацию
$summary = getOrderBasketSummary(12345);
echo 'Товаров в заказе: ' . $summary['items_count'];
echo 'Общая сумма: ' . $summary['total_sum'] . ' ' . $summary['currency'];
Notes:
⚠️ getBasket() возвращает объект Basket с коллекцией позиций. getFinalPrice() возвращает цену с учётом скидок и НДС. Свойства позиции (размер, цвет и т.д.) доступны через getPropertyCollection(). Для получения информации о товаре используйте getProductId() и загружайте элемент инфоблока отдельно.