Для получения всех свойств товаров в заказе в системе 1C-Bitrix можно воспользоваться следующими методами.
1. Если у вас есть объект заказа ($order
), то можно получить список всех товаров в заказе с помощью метода GetBasketList()
. Затем, для каждого товара в списке можно получить его свойства с помощью метода GetProperties()
. Пример кода:
$order = BitrixSaleOrder::load($orderId); $basket = $order->getBasket(); /** @var BitrixSaleBasketItem $basketItem */ foreach ($basket as $basketItem) { $productId = $basketItem->getProductId(); $product = BitrixCatalogProductTable::getList([ 'filter' => ['ID' => $productId], 'select' => ['ID', 'NAME'], ])->fetch(); $properties = $basketItem->getPropertyCollection(); $values = []; /** @var BitrixSaleBasketPropertyItem $property */ foreach ($properties as $property) { $values[$property->getField('CODE')] = $property->getField('VALUE'); } // Вывод информации о товаре и его свойствах echo 'Товар: ' . $product['NAME'] . '<br>'; echo 'Свойства:<br>'; foreach ($values as $code => $value) { echo $code . ': ' . $value . '<br>'; } echo '<br>'; }
В данном примере получается объект товара $basketItem
из корзины заказа и его свойства сохраняются в массив $values
. Затем можно выводить информацию о товаре и его свойствах на экран.
2. Если у вас есть идентификатор заказа ($orderId
), но нет объекта заказа, можно воспользоваться методами BitrixSaleOrder::load()
и BitrixSaleBasketBase::getBasketItems()
для получения списка всех товаров в заказе и их свойств. Пример кода:
$order = BitrixSaleOrder::load($orderId); $basket = $order->getBasket(); /** @var BitrixSaleBasketItem $basketItem */ foreach ($basket as $basketItem) { $productId = $basketItem->getProductId(); $product = BitrixCatalogProductTable::getList([ 'filter' => ['ID' => $productId], 'select' => ['ID', 'NAME'], ])->fetch(); $properties = $basketItem->getPropertyCollection(); $values = []; /** @var BitrixSaleBasketPropertyItem $property */ foreach ($properties as $property) { $values[$property->getField('CODE')] = $property->getField('VALUE'); } // Вывод информации о товаре и его свойствах echo 'Товар: ' . $product['NAME'] . '<br>'; echo 'Свойства:<br>'; foreach ($values as $code => $value) { echo $code . ': ' . $value . '<br>'; } echo '<br>'; }
В данном примере используется метод load()
для загрузки объекта заказа по его идентификатору. Затем, используя метод getBasket()
, получается корзина заказа, и для каждого товара в корзине получаются его свойства.
В обоих примерах используется метод BitrixCatalogProductTable::getList()
для получения информации о товаре по его идентификатору ($productId
), так как информация о товарах хранится в таблице "b_catalog_product".