1С Битрикс API. Получить все свойства товара
Требуется вывести массив всех активных товаров с их свойствами.
В документации был предложен следующий способ:
$arSelect = Array("ID", "IBLOCK_ID","PROPERTY_*");
Т.е. выбрать все свойства, но это не работает.
Когда выбираю одно свойтсво: Array("ID", "IBLOCK_ID","PROPERTY_COLOR"), то оно работает как надо.
Так же пробовал через $props = $item->GetProperties(), но возвращается лишь пустой массив.
Есть ли ещё способы вывести все характеристики товара?
Ответы (1 шт):
Автор решения: Eduard
→ Ссылка
Что-то покрутил, честно признаюсь, не понял, где ошибся. В итоге всё заработало. Ниже привожу рабочий код:
<?php
//Типы цен, которые должны быть в массиве
$base_price = 4;
$opt_price = 14;
//Выбираю все активные товары и некоторые поля
$db_res = CIBlockElement::GetList(
array(),
array('IBLOCK_TYPE'=>'catalog','IBLOCK_ID' => 2, 'ACTIVE' => 'Y'),
false,
false,
array('ID','IBLOCK_ID','NAME','IBLOCK_SECTION_ID','DETAIL_PICTURE','DETAIL_TEXT')
);
while(($ar_res = $db_res->GetNextElement())){
//Получаю поля товара
$ar_fields = $ar_res->GetFields();
//Получаю все (активные и не пустые) свойства товара
$ar_props = $ar_res->GetProperties(Array(),Array('ACTIVE'=>'Y','EMPTY'=>'N'));
//Получаю цены товара
$prices = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $ar_fields['ID'],
"CATALOG_GROUP_ID" => Array($base_price,$opt_price)
)
);
//Добавляю цены в массив
while ($price = $prices->Fetch()) {
$ar_fields['PRICES'][$price['CATALOG_GROUP_ID']] = $price;
}
//Добавляю свойства в массив
$ar_fields['PROPERTIES'] = $ar_props;
echo "<pre>"; print_r($ar_fields); echo "</pre>";
}
Надеюсь, это кому-то поможет.