Сейчас решил следующим образом, при этом
если у Вас есть иное решение - пожалуйста, предлагайте!
require($_SERVER['DOCUMENT_ROOT'].'/local/templates/main/phpscripts/myGetBasketData.php');// класс нужен для получения Id товаров с скидкой
$myGetBasketData = new myGetBasketData;
global $arrFilter;
$arrFilter = array();
$arrFilter["=ID"] = $myGetBasketData->getProductIdDiscontAr();
далее $arrFilter передаём комплексному компоненту bitrix catalog через FILTER_NAME а именно
$APPLICATION->IncludeComponent(
"bitrix:catalog",
"new_catalog",
array(
"FILTER_NAME" => "arrFilter",
...
Метод
getProductIdDiscontAr класса
myGetBasketData доступен в листинге файла класса
myGetBasketData.php по ссылке
blog.ivru.net/?id=96
Важно! Метод возвращает массив товаров с скидкой, только тогда, когда скидка создана непосредственно на товар, то есть так как показано на скринсшоте.
Алгоритм работы метода определения Id товаров с скидкой метода getProductIdDiscontAr() примерно следующий
1) получается список скидок через CSaleDiscount::GetList
2) далее в foreach Id скидок передаются в CSaleDiscount::GetByID
3) у возвращённых данных проверяется наличие и не пустота ключа массива ["CONDITIONS"]
4) если строка есть и не пустая парсятся данные от Equal";s:5:"value";a: до }
5) если такие данные найдены то они множественно парсятся от i: до ;
6) каждое второе значение это и есть Id товара на который действует скидка(эти Id собираются в массив $prodIdAr и возвращаются методом getProductIdDiscontAr)
Таким образом если у Вас скидки указаны не явно на товар а например по свойства, то метод нужно дописывать под такие скидки.