Меню
Получить цены товаров с помощью D7-ORM в 1С-Битрикс

Веб-разработка часто требует работы с базой данных для получения и обработки информации о товарах, в том числе и их
цен. В 1С-Битрикс это можно сделать с помощью Object-Relational Mapping (ORM) и соответствующих классов.
Код из заметки выведет вообще все товары которые есть в системе, из всех инфоблоков.
Что бы получить из конкретного инфоблока нужно добавить дополнительную фильтрацию в метод.
А как получить цены с учетом скидок?
Алмаз, перейти на symfony
Или
Код
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');

use Bitrix\Catalog\PriceTable;
use Bitrix\Main\Loader;
use Bitrix\Catalog\ProductTable;
use Bitrix\Catalog\Discount\DiscountManager;

Loader::includeModule('catalog');

// Получаем товары и их цены
$prices = PriceTable::getList([
    'select' => [
        'ID',
        'PRODUCT_ID',
        'CATALOG_GROUP_ID',
        'PRICE',
        'CURRENCY'
    ],
    'order' => [
        'PRODUCT_ID' => 'ASC'
    ]
]);

while ($price = $prices->fetch()) {
    // Получаем информацию о продукте
    $product = ProductTable::getById($price['PRODUCT_ID'])->fetch();

    // Получаем оптимальную цену с учетом скидок
    $optimalPrice = \CCatalogProduct::GetOptimalPrice(
        $price['PRODUCT_ID'],
        1, // количество
        [], // группы пользователей
        'N', // не учитывать скидки
        [$price], // массив цен
        's1', // сайт
        []
    );

    // Если есть оптимальная цена, выводим ее
    if ($optimalPrice) {
        echo "Product ID: " . $price['PRODUCT_ID'] . "\n";
        echo "Base Price: " . $price['PRICE'] . " " . $price['CURRENCY'] . "\n";
        echo "Discounted Price: " . $optimalPrice['RESULT_PRICE']['DISCOUNT_PRICE'] . " " . $optimalPrice['RESULT_PRICE']['CURRENCY'] . "\n";
        echo "Discount: " . $optimalPrice['RESULT_PRICE']['DISCOUNT'] . "\n";
        echo "--------------------------\n";
    }
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Создание локальных уведомлений для приложения на Apache Cordova

Задача состоит в том, чтобы реализовать возможность локальных уведомлений в приложении на Apache Cordova без использован...

Fancybox в стандартном шаблоне детальной карточки товара, 1С-Битрикс, вместо всплывающего окна и лупы.

Задача: заменить работу с изображениями в стандартном или кастомном шаблоне детальной карточки (catalog.element)...

Связанные элементы в карточке товара, с помощью catalog.section

Достаточно часто, при разработке магазинов на битрикс, требуется выводить связанные элементы внутри карточки товара. Д...

Не дать купить товара больше, чем находится на определенных складах

Задача: в магазине 20 складов, на всех есть остатки но нужно ограничить покупку товара только остатками на двух складах,...

Заменить popap "Товар добавлен в корзину" на собственное окно

Задача: заменить модальное окно, которое появляется при добавлении товара в корзину — "Товар добавлен в корзину&quo...

Сгенерировать скидочные купоны, при заказе и отправить на почту

Задача: после того как пользователь сделал заказ, нужно сгенерировать одноразовые купоны для скидки (правила корзины) и ...

Уникальный URL для торговых предложений (SKU) с возможностью автоматического выбора предложения при переходе по ссылке.

Задача: на странице товара необходимо реализовать функцию автоматического изменения URL при выборе определенной товарной...

Помечаем новинки лейблом в каталоге битрикс

Достаточно часто, при разработке каталога товаров или интернет магазина на системе управления Битрикс, встает задача как...

Подключение мобильной версии шаблона Битрикс сайта, с автопереключением

Предпочитаю, что бы сайт не грузил кучу скриптов и стилей. При загрузке адаптивного шаблона за ним тянется очень много ф...