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

Просмотров: 755

Веб-разработка часто требует работы с базой данных для получения и обработки информации о товарах, в том числе и их цен. В 1С-Битрикс это можно сделать с помощью Object-Relational Mapping (ORM) и соответствующих классов.

Использование ORM для получения цен товаров в 1С-Битрикс

Один из основных компонентов 1С-Битрикс для работы с товарами и каталогами – это модуль каталога (catalog). В этом модуле предоставляются удобные средства для работы с товарами, их свойствами и ценами. Давайте рассмотрим пример использования ORM для получения цен товаров из каталога.

Шаг 1: Подключение необходимых модулей

Прежде всего, необходимо подключить модуль catalog и, возможно, другие модули, которые могут понадобиться для работы с каталогом товаров. Для этого мы используем класс Bitrix\Main\Loader, который позволяет динамически подключать модули в коде.

use Bitrix\Catalog\PriceTable;
use Bitrix\Main\Loader;
Loader::includeModule('catalog');

Шаг 2: Получение цен товаров с помощью ORM

После подключения модуля catalog мы можем использовать класс PriceTable для получения цен товаров из базы данных. Метод getList позволяет получить список цен с определенными условиями.

$prices = PriceTable::getList([
    'select' => [
        'ID',
        'PRODUCT_ID',
        'CATALOG_GROUP_ID',
        'PRICE',
        'CURRENCY'
    ],
    'order' => [
        'PRODUCT_ID' => 'ASC'
    ]
]);

В этом запросе мы указываем, какие поля нам нужны (ID, PRODUCT_ID, CATALOG_GROUP_ID, PRICE, CURRENCY) и как упорядочить результаты (по PRODUCT_ID в порядке возрастания).

Шаг 3: Обработка результатов

Полученные данные можно обрабатывать в цикле, например, выводить на страницу в удобном формате.

while ($price = $prices->fetch()) {
    print_r($price); // Распечатка всех полученных данных
}

Этот код выводит информацию о ценах товаров в формате массива. Вы можете адаптировать его под свои нужды, например, формировать HTML-разметку для вывода на странице или использовать полученные данные для дальнейших вычислений или операций.

Получение цен через API - код целиком

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
use Bitrix\Catalog\PriceTable;
use Bitrix\Main\Loader;

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

while ($price = $prices->fetch()) {
    print_r($price);
}

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
Михаил Базаров 03.02.2024
Код из заметки выведет вообще все товары которые есть в системе, из всех инфоблоков.
Что бы получить из конкретного инфоблока нужно добавить дополнительную фильтрацию в метод.
Алмаз 14.06.2024
А как получить цены с учетом скидок?

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

Бонус за выполненный заказ на внутренний счет пользователя

Задача: после того как заказ, в интернет-магазине, перешел в статус "Выполнен" начислить пользователю 5% от стоимости за...

Переключатель валюты в каталоге 1С-Битрикс

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

CAPTCHA с возможностью обновления без перезагрузки страницы в 1C-Битрикс

Задача: Так как стандартная капча в 1С-Битрикс, может отобразиться не удачно (символы уходят за грань капчи или не у...

Фиксированная корзина с обновлением, без перезагрузки страницы.

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

Вывести свойство отдельно ото всех или исключить из всех

Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство отдельно ото всех, или вообще н...

Автогенерация символьных кодов разделов и элементов Битрикс

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

Рассылка новинок каталога в автоматическом режиме

Что бы реализовать рассылку новинок каталога на email-ы пользователей, можно воспользоваться событием OnBeforeIBlockElem...

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...

Заполнить инфоблок брендов из свойства инфоблока с товарами

Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производите...