@alexwprof

Как правильно работать с методом CCatalogDiscount::GetList битрикс?

Необходимо получить значения скидок товаров на главную страницу в слайдеры. В слайдерах карточки товаров.
В документации нашёл метод CCatalogDiscount::GetList, не могу разобраться как правильно с ним работать. Он возвращает нужные мне поля : NAME - название скидки, VALUE - величина скидки и прочие.
Есть уже готовый код, через который идёт получение товаров в слайдер по свойству :
<?
if(CModule::IncludeModule("iblock")){

$arSelect = Array(
    "ID",
    "IBLOCK_ID",
    "DETAIL_PAGE_URL",
    "NAME", "PREVIEW_PICTURE",
    "PREVIEW_TEXT",
    "DATE_ACTIVE_FROM",
    "CATALOG_GROUP_1",
    
    
);
 $arrFilterMain["PROPERTY_CATMAIN_PROD_VALUE"] = "выгодные комплекты";
 $res = CIBlockElement::GetList(
    Array(),
    $arrFilterMain,
    false,
    Array("nPageSize"=>50),
    $arSelect
);
 
while($ob = $res->GetNextElement()) {


    $arFields = $ob->GetFields();
    $arProps = $ob->GetProperties();

//debug($arProps);
}
}

Сюда надо как то добавить получение скидок

Сам по себе метод CCatalogDiscount::GetList не работает. На отдельной тестовой странице пытаюсь получить скидки по одному конкретному товару, ничего не возвращает.
<?
// Выберем все скидки для данного товара

$dbProductDiscounts = CCatalogDiscount::GetList(
    array("SORT" => "ASC"),
    array(
            "+PRODUCT_ID" => 64,
            "ACTIVE" => "Y",
            "!>ACTIVE_FROM" => $DB->FormatDate(date("Y-m-d H:i:s"), 
                                               "YYYY-MM-DD HH:MI:SS",
                                               CSite::GetDateFormat("FULL")),
            "!<ACTIVE_TO" => $DB->FormatDate(date("Y-m-d H:i:s"), 
                                             "YYYY-MM-DD HH:MI:SS", 
                                             CSite::GetDateFormat("FULL")),
            "COUPON" => ""
        ),
    false,
    false,
    array(
            "ID", "SITE_ID", "ACTIVE", "ACTIVE_FROM", "ACTIVE_TO", 
            "RENEWAL", "NAME", "SORT", "MAX_DISCOUNT", "VALUE_TYPE", 
    "VALUE", "CURRENCY", "PRODUCT_ID"
        )
    );
while ($arProductDiscounts = $dbProductDiscounts->Fetch())
{
  print_r = $arProductDiscounts;
}
?>


Вместо $PRODUCT_ID подставляю id товара 64. Может что-то не правильно делаю?
Либо есть другой способ решить мою задачу
В каталоге есть массив, это из карточки товара массив:
[PRICES] => Array
        (
            [price_type] => Array
                (
                    [PRICE_ID] => 1
                    [ID] => 13
                    [CAN_ACCESS] => Y
                    [CAN_BUY] => Y
                    [MIN_PRICE] => Y
                    [CURRENCY] => RUB
                    [VALUE_VAT] => 6900
                    [VALUE_NOVAT] => 6900
                    [DISCOUNT_VALUE_VAT] => 6865
                    [DISCOUNT_VALUE_NOVAT] => 6865
                    [ROUND_VALUE_VAT] => 6865
                    [ROUND_VALUE_NOVAT] => 6865
                    [VALUE] => 6900
                    [UNROUND_DISCOUNT_VALUE] => 6865
                    [DISCOUNT_VALUE] => 6865
                    [DISCOUNT_DIFF] => 35
                    [DISCOUNT_DIFF_PERCENT] => 1
                    [VATRATE_VALUE] => 0
                    [DISCOUNT_VATRATE_VALUE] => 0
                    [ROUND_VATRATE_VALUE] => 0
                    [PRINT_VALUE_NOVAT] => 6 900 руб.
                    [PRINT_VALUE_VAT] => 6 900 руб.
                    [PRINT_VATRATE_VALUE] => 0 руб.
                    [PRINT_DISCOUNT_VALUE_NOVAT] => 6 865 руб.
                    [PRINT_DISCOUNT_VALUE_VAT] => 6 865 руб.
                    [PRINT_DISCOUNT_VATRATE_VALUE] => 0 руб.
                    [PRINT_VALUE] => 6 900 руб.
                    [PRINT_DISCOUNT_VALUE] => 6 865 руб.
                    [PRINT_DISCOUNT_DIFF] => 35 руб.
                )

Было бы идеально получить поля из него, но не выходит
  • Вопрос задан
  • 2192 просмотра
Решения вопроса 2
$arPrice = CCatalogProduct::GetOptimalPrice($productID);
Ответ написан
Комментировать
alexyarik
@alexyarik
Битрикс разработчик
Так а в чём сложность получения скидки если у вас есть массив данных товара?
Есть цена без скидки [VALUE], есть цена со скидкой [DISCOUNT_VALUE], есть скидка [DISCOUNT_DIFF]. Получение процентов в таком случае это обычная школьная задача, которую вы можете написать на РНР и вывести процент скидки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы