Меню
Получить цены товаров с помощью 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";
    }
}
Видеоуроки по
1С-Битрикс
на моем Boosty канале Видео
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

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

Memcached на сайте под управлением битрикс, при использовании Веб Окружения Битрикс

Если вам важна скорость отдачи сайта, а у вашего сервера медленный диск для использования кеша на файлах. Можно кеширова...

Получение токена доступа API Firebase (HTTP v1) с помощью PHP для отправки push-уведомлений.

До июня 2024 года API Firebase использовал постоянный токен доступа, который можно было получить один раз в консоли. Одн...

Дать пользователю возможность быстро отредактировать материал

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

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

Задача: пользователи могут оплачивать заказы с бонусного счета (штатный внутренний счет), но если в корзине&nbsp...

Удаление недоступных для заказа товаров из корзины

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

Моментальная фильтрация на AJAX в умном фильтре 1С-Битрикс

При штатной установке, интернет-магазина на 1С Битрикс, умный фильтр по товарам, показывает колличество найденных товаро...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...

Добавление своих полей в почтовые шаблоны Битрикс

Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...

Малая корзина Битрикс, упрощенный шаблон

Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке интернет-магазина. Код окульту...