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

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

Веб-разработка часто требует работы с базой данных для получения и обработки информации о товарах, в том числе и их цен. В 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
Код из заметки выведет вообще все товары которые есть в системе, из всех инфоблоков.
Что бы получить из конкретного инфоблока нужно добавить дополнительную фильтрацию в метод.