Здравствуйте,
имеются товары, в частности - шнуры (веревки, канаты).
Разного типа, плетения, материала - это разделы.
Каждый товар предлагается в нескольких "фасовках" и различной длины - моток, бухта, катушка, бобина. Это свойство торгового предложения.
Задача - на странице списка показать все доступные варианты намоток.
Имеется такой код:
Задачу как бы решает, но... Если в разделе пусть 100 наименований, да в каждом по 20-50 торговых предложений - количество запросов местами доходит до 8000, и это только на один раздел.
Имеется ли возможность получить варианты упаковки товара из его товарных предложений менее затратным способом?
Что-то вроде группировки в GetProperty...
имеются товары, в частности - шнуры (веревки, канаты).
Разного типа, плетения, материала - это разделы.
Каждый товар предлагается в нескольких "фасовках" и различной длины - моток, бухта, катушка, бобина. Это свойство торгового предложения.
Задача - на странице списка показать все доступные варианты намоток.
Имеется такой код:
| Код |
|---|
$arProductInfo = CCatalogSKU::GetInfoByProductIBlock(2); // 2 - id инфоблока товаров (каталог)
$arElmidArr = array_unique($arElmidArr); // массив ID товаров в раздеде
$packArr = array();
if (is_array($arProductInfo)) {
$rsOffers = CIBlockElement::GetList(
array(), // array arOrder
array(
'IBLOCK_ID' => $arProductInfo['IBLOCK_ID'],
'PROPERTY_'.$arProductInfo['SKU_PROPERTY_ID'] => $arElmidArr
)
);
while ($arOffer = $rsOffers->GetNext()) {
// здесь кол-во проходов равно кол-ву товаров в разделе
// 3 - id инфоблока товарных предложений
$pk_props = CIBlockElement::GetProperty(3, $arOffer['ID'], array("sort" => "asc"), Array("CODE"=>"PACKAGING"));
if($of_props = $pk_props->GetNext()) {
// здесь кол-во проходов равно кол-ву торговых предложений у товара
$packArr[$of_props['VALUE']] = $of_props['VALUE'];
}
}
} |
Имеется ли возможность получить варианты упаковки товара из его товарных предложений менее затратным способом?
Что-то вроде группировки в GetProperty...