Вывести минимальную и максимальную цену в разделе каталога Битрикс.
Если нужно по вывести цены в конкретном разделе каталога (или в каждом) размещаем этот код в section.php комплексного шаблона каталога и передаем в фильтр SECTION_ID — собственно ID раздела.
Получаем первый и последний элементы массива
Дальше все просто, обычным php получаем первый и последний элементы массива $arPrices. Соответственно, в первом элементе у нас минимальная цена, в последнем максимальная
Используем встроенные в php функции array_shift — извлекает первый элемент массива и array_pop — извлекает последний элемент массива
$minPrice = array_shift($arPrices); $maxPrice = array_pop($arPrices);
Теперь, в переменных $minPrice и $maxPrice у нас минимальная и максимальная цена товара. Таким же образом, используя CIBlockElement::GetList можно получать и сортировать любую информацию о товарах.
Гость 09.04.2023
Михаил, выводится минимальная базовая цена товара, но если у товара скидка — она не учитывается. Можно как-то вывести минимальную цену с учётом скидок на товары?
Михаил Базаров 09.04.2023
Примерная наводка, сейчас негде проверить и дописать. Если справитесь, напишите готовый код (если нет, то смогу в сл выходные)
Нужен метод CCatalogProduct::GetDiscountGroupList (инфа о скидках по ID товара)
$resPrice = CIBlockElement::GetList( Array( "CATALOG_PRICE_2" => "ASC" ), Array( "SECTION_ID"=>$arResult['~ID'] ), false, false, Array( "ID", "CATALOG_PRICE_2" ) ); while($getPrices = $resPrice->Fetch()) < // Получение скидок ID текущего товара $discounts = CCatalogProduct::GetDiscountGroupList( $getPrices['ID'] ); // Получение информации о каждой скидке foreach ($discounts as $discount) < $discountInfo = CCatalogDiscount::GetByID( $discount['ID'] ); /* Здесь вычитаем скидку из цены товара */ >// // Если скидка есть, загоняем вычисленное значение в $arPrices[] // Иначе, просто $getPrices['CATALOG_PRICE_2'] >
На деле может оказаться много зависимостей: скидка по периоду, скидка на количество и прочие условности скидки.
Нужно на конкретном проекте адаптироваться.
Мои видео на Boosty:
Поделиться страницей:
Как вывести цену товара?
Не выводит цену, компонент каталог
Основной компонент 
У всех товаров есть цена и тип цен у всех Base, у основного каталога тоже базовый
- Вопрос задан более трёх лет назад
- 4177 просмотров
Комментировать
Решения вопроса 1

Работаю с Bitrix24
Например, если вывод у Вас через CIblockElement::GetList происходит, а тип базовой цены имеет идентификатор 1, то можно в select параметр добавить: CATALOG_PRICE_1 — и он достанет цену.
Вообще есть достаточно много материалов на эту тему. Если немного поискать, то сразу всплывает:
https://dev.1c-bitrix.ru/support/forum/forum6/topi.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
GetBasePrice
Метод возвращает базовую цену товара с кодом PRODUCT_ID. Базовая цена — это цена базового типа цен. Нестатический метод.
Параметры вызова
| Параметр | Описание | С версии |
|---|---|---|
| productID | Код товара или торгового предложения (ID элемента инфоблока). |
Возвращаемые значения
Возвращает ассоциативный массив с ключами:
| Код | Описание |
|---|---|
| ID | Код ценового предложения. |
| PRODUCT_ID | Код товара или торгового предложения (ID элемента инфоблока). |
| EXTRA_ID | Код наценки. |
| CATALOG_GROUP_ID | Код типа цены. |
| PRICE | Базовая цена. |
| CURRENCY | Валюта базовой цены. |
| QUANTITY_FROM | Количество товара, начиная с приобретения которого действует эта цена. |
| QUANTITY_TO | Количество товара, при приобретении которого заканчивает действие эта цена. |
Примеры использования
"; echo "Отформатированая базовая цена: ". CurrencyFormat($ar_res["PRICE"], $ar_res["CURRENCY"]); ?>
Новинки документации в соцсетях:
Получить и вывести все цены товара в 1С-Битрикс
Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.element), независимо от того, разрешен ли просмотр цены конкретной группе пользователей.

Для получения всех цен товара в Битрикс вы можете использовать метод GetCatalogProductPriceList класса CCatalogProduct или метод GetList класса CPrice.
Использования метода GetCatalogProductPriceList
Наиболее правильным способом получения этих данных является использование файла result_modifier.php и дозаполнение массива $arResult.
$allProductPrices = \Bitrix\Catalog\PriceTable::getList([ "select" => ["*"], "filter" => [ "=PRODUCT_ID" => $arResult['ID'], ], ])->fetchAll(); foreach ($allProductPrices as $allProductPrice)
В этом примере мы передаем ID товара в метод GetCatalogProductPriceList и получаем список всех цен для этого товара. Затем мы перебираем результаты и добавляем их в массив $arResult[‘ALL_PRICES’].
Массив $arResult[‘ALL_PRICES’] будет содержать все данные о ценах, которые можно использовать в шаблоне.
Использование метода GetList класса CPrice
use Bitrix\Catalog\PriceTable; $prices = \CPrice::GetList([], [ 'PRODUCT_ID' => $arResult['ID'] ]); while ($price = $prices->Fetch())
В этом примере используется класс CPrice и метод GetList, в котором передается фильтр по PRODUCT_ID для получения цен, связанных с определенным товаром. Затем, аналогично первому примеру, мы добавляем полученные цены в массив $arResult[‘ALL_PRICES’].
Сравнение двух типов цен для иммитации системы скидок
Исходя из этих примеров, можно реализовать имитацию системы скидок, фактически не создавая скидок. Пример:
// result_modifier.php ======================= $allProductPrices = \Bitrix\Catalog\PriceTable::getList([ "select" => [ "PRICE" // Нужна только цена ], "filter" => [ "=PRODUCT_ID" => $arResult['ID'], ], "order" => [ "PRICE" => "DESC" // Сортируем по уменьшению цены ] ])->fetchAll(); foreach ($allProductPrices as $allProductPrice) < $arResult['ALL_PRICES'][] = $allProductPrice; >// template.php =============================== // Старая зачеркнутая цена echo $arResult['ALL_PRICES']['0']['PRICE']; // Цена покупки echo $arResult['ALL_PRICES']['1']['PRICE']; // Расчет процента (для вывода в лейбле, можно округлить с float) echo $arResult['ALL_PRICES']['1']['PRICE'] * 100 / $arResult['ALL_PRICES']['0']['PRICE'];
Метод GetCatalogProductPriceList класса CCatalogProduct более оптимизирован и эффективен с точки зрения производительности, особенно при работе с большим количеством товаров. Этот метод осуществляет непосредственный запрос к базе данных, что позволяет получить список цен товара более эффективно.
В свою очередь, метод GetList класса CPrice работает с классическим API Битрикс и выполняет запросы на основе старых структур данных. В некоторых случаях, особенно при работе с большим объемом данных, это может вызывать некоторые затраты на производительность.
Михаил Базаров 27.05.2023
Таким образом, для получения всех цен товара рекомендуется использовать метод GetCatalogProductPriceList, поскольку он предлагает более эффективное решение с точки зрения производительности.
Мои видео на Boosty:
Поделиться страницей:
