Задача решена. Опишу решение, возможно кому-нибудь пригодится.
Изначально, необходимо было вывести на главной странице каталога блок с товарами каталога, по свойству PROPERTY_STICKERS – типа список, которым заданы значения Хит, Советуем, Новинки, Акции для вывода товаров с соответствующими стикерами. При этом товары должны выводится с размером скидок, указанием старой цены, ценой конвертированной из Валюты в рубли.
Методы битрикс
CIBlockElement::GetList и
CCatalogDiscount::GetList не идеальны для решения данной задачи. По моему мнению целесообразней использовать компонент
catalog.section с фильтром по свойству. Для чего в параметрах компонента задан фильтр:
"USE_FILTER" => "Y",
"FILTER_NAME" => "arrFilterAdvice",
И для получения всех товаров каталога, в которых заданы значения свойству PROPERTY_STICKERS (свойство не пустое) задан фильтр.
<? $GLOBALS['arrFilterAdvice'] = array('ACTIVE' => 'Y', '!PROPERTY_STICKERS' => false);
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
"shop_window",
array(
…
"USE_FILTER" => "Y",
"FILTER_NAME" => "arrFilterAdvice",
…
Таким образом получен список товаров которым заданы значения, и уже в файле result_modifier.php сортирую полученные элементы по массивам - Хит, Советуем, Новинки, Акции, добавляю в результатирующий массив $arResult для кеширования.
if(!$arResult["ADVICE"]){
foreach($arResult["ITEMS"] as $Element){
foreach($Element["PROPERTIES"]["STICKERS"]["VALUE_XML_ID"] as $type){
if($type == "HIT") $arResult["ADVICE"]["HIT"][$Element["ID"]] = $Element;
if($type == "RECOMMEND") $arResult["ADVICE"]["RECOMMEND"][$Element["ID"]] = $Element;
if($type == "NEW") $arResult["ADVICE"]["NEW"][$Element["ID"]] = $Element;
if($type == "STOCK") $arResult["ADVICE"]["STOCK"][$Element["ID"]] = $Element;
}
}
}
Полученные данные вывожу в шаблоне компонента catalog.section в виде табов.