@zekin375

Получить свойство товара из заказа bitrix?

Получаю данные о товарах с помощью кода

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
 $ORDER_ID='4455';
 CModule::IncludeModule('sale');
$res = CSaleBasket::GetList(array(), array("ORDER_ID" => $ORDER_ID)); 
$json_product=array();
while ($arItem = $res->Fetch()) {
var_dump($arItem);

$price_list[] = array(
	'name' => $arItem['NAME'],
	'id' => $arItem['PRODUCT_ID'],
	'price' => $arItem['PRICE'],
	'quantity' => $arItem['QUANTITY']
);
}
?>

$arItem не содержит свойств товара, помогите получить свойство
  • Вопрос задан
  • 3972 просмотра
Пригласить эксперта
Ответы на вопрос 4
AlexeyCaTHaR
@AlexeyCaTHaR
use Bitrix\Sale;

$basket = Sale\Order::load($orderId)->getBasket(); // получили корзину по $orderId

$basketItems = $basket->getBasketItems(); // получили товары корзины

foreach ($basketItems as $basketItem) {
$basketPropertyCollection = $item->getPropertyCollection(); // вот и  свойства товара

foreach ($basketPropertyCollection as $propertyItem) {
    if ($propertyItem->getField('CODE') == 'ARTICLE') {
        var_dump($propertyItem->getValue());
    }
}
}


вот понятно написано
https://mrcappuccino.ru/blog/post/work-with-order-...
https://mrcappuccino.ru/blog/post/work-with-basket...
Ответ написан
Комментировать
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Если свойство попадает в заказ, то
// получение списка свойств для заказа с ID 123
$dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
    'select' => ['*'],
    'filter' => [
        '=ORDER_ID' => 123, 
    ]
]);

while ($item = $dbRes->fetch())
{
    var_dump($item);
}

Иначе
Ответ написан
@zekin375 Автор вопроса
В принципе понимаю что можно получить свойство товара с помощью другого кода и дополнить массив ну как это сделать не знаю

Есть массив $price_list

Array
(
    [0] => Array
        (
            [name] => Товар 1
            [id] => 358
            [price] => 90.0000
            [quantity] => 1
        )

    [1] => Array
        (
            [name] => Товар 2
            [id] => 5017
            [price] => 500.0000
            [quantity] => 1
        )

)


Получаю свойство товара по id

<?$prop=CIBlockElement::GetByID(358)->GetNextElement()->GetProperties();
echo $prop[CML2_ARTICLE][VALUE]?>


Помогите пожалуйста дополнить массив $price_list свойством артикул

Array
(
    [0] => Array
        (
            [name] => Товар 1
            [id] => 358
            [price] => 90.0000
            [quantity] => 1
            [ARTICLE] => 122
        )

    [1] => Array
        (
            [name] => Товар 2
            [id] => 5017
            [price] => 500.0000
            [quantity] => 1
            [ARTICLE] => 123
        )

)
Ответ написан
Комментировать
AndreyChursin
@AndreyChursin
Не многословен
Вроде бы CSaleBasket возвращает объект типа CDBResult, тогда у него есть методы:
  1. Fetch() - вытаскивает массив из результата
  2. GetNextElement() - получает следующий объект результата
  3. GetFields() - вытаскивает массив из результата
  4. GetProperties() - вытаскивает массив свойств результата


Попробуй код типа:
$db_elemens = CSaleBasket::GetList(...);
while($obElement = $db_elemens->GetNextElement())
{
   $item= $obElement->GetFields();
   $item["PROPERTIES"] = $obElement->GetProperties();
   $arResult["ITEMS"][] = $item;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы