Фильтр товаров по списку маркетинговых акций

Фильтрация выборки товаров, на основе правил работы с корзиной
Фильтр товаров по списку маркетинговых акций
if(CModule::IncludeModule('sale')){
    $result = Bitrix\Sale\Internals\DiscountTable::getList(
        array(
            'filter'  => array("LID" => "s4", 'ACTIVE' => 'Y'), // фильтр по сайту s4, только активные (можно подставить SITE_ID)
        )
    );
    while ($data = $result->fetch()){
        if($data['SHORT_DESCRIPTION_STRUCTURE']['VALUE'] >= '15'){ // размер скидки в списке маркетинговых акций
            foreach ($data['CONDITIONS_LIST']['CHILDREN'] as $arData){
                foreach ($arData['CHILDREN'] as $arElements){ // получаем ID секций и элементов
                    switch ($arElements['CLASS_ID']) {
                    case "CondIBSection": // отбор секций
                        //echo "
**";print_r($arElements['DATA']['value']);echo "**
"; $sectionsvalue['SECTION_ID'][] = $arElements['DATA']['value']; // сохраняем ID секций //$GLOBALS["arrFilterSale"]['SECTION_ID'][] = $arElements['DATA']['value']; // укладываем в глобальный массив фильтра break; case "CondIBElement": // отбор элементов foreach ($arElements['DATA']['value'] as $arElementsList){ // получаем ID элементов //echo "
*";print_r($arElementsList);echo "*
"; $elementsvalue['ID'][] = $arElementsList; //$GLOBALS["arrFilterSale"]['ID'][] = $arElementsList; // укладываем в глобальный массив фильтра } break; } } } } } } function GetElementID($ibID, $sectID){ if(CModule::IncludeModule('iblock')) $arSelect = Array("ID");// берем только идентификатор $arFilter = Array("IBLOCK_ID"=>IntVal($ibID), "SECTION_ID"=>$sectID, "ACTIVE"=>"Y"); // фильтруем по инфоблоку и ID секции $res = CIBlockElement::GetList(array("RAND"=>"RAND"), $arFilter, false, Array("nPageSize"=>50), $arSelect);// выводим кол-во рандомных записей while($ob = $res->GetNextElement(false,false)){ $arFields[] = $ob->GetFields(); } foreach ($arFields as $ids){ // приводим массив к нужному виду $result[] = $ids["ID"]; } return $result; } $FilterResult = GetElementID(18, $sectionsvalue['SECTION_ID']);// указываем ID инфоблока и передаем ID секций для выборки ID элементов $arFilterResult = array_merge($elementsvalue['ID'], $FilterResult);// объединяем массивы $GLOBALS["arrFilterSale"]['ID'] = $arFilterResult;

Разработка. Модуль sale