Здравствуйте,
имеются товары, в частности - шнуры (веревки, канаты).
Разного типа, плетения, материала - это разделы.
Каждый товар предлагается в нескольких "фасовках" и различной длины - моток, бухта, катушка, бобина. Это свойство торгового предложения.
Задача - на странице списка показать все доступные варианты намоток.
Имеется такой код:
Задачу как бы решает, но... Если в разделе пусть 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...