Класс для массовой и быстрой загрузки(получения) базовой цены товаров или торговых предложений в bitrix без использования api работы с каталогом и инфоблоками.

Было замечено что как и цена товаров, так и торговых предложений находится в единой таблице MySQL под названием b_catalog_price. Поскольку стандартные методы не позволяли получать массово цен для всех товаров и торговых предложений, а имеющийся функционал с запросами цены для каждого товара или торгового предложения работал достаточно медленно(запрос примерно по 7000 товарам и ТП отрабатывал примерно за 40 секунд) было решено написать класс, который получает базовые цены(товаров или торговых предложений) из указанной таблицы b_catalog_price, кроме того умеет производить выборку по единственному товару или торговому предложению или же выбирать информацию по всем товарам и торговым предложениям из базы данных, а при повторных запросах работать с уже сформированным массивом цен, то есть без повторных обращений к базе данных.

Обратите внимание в настоящее время класс получает только базовую цену. Возможно в будущем будет реализована возможность получения цены с учётом скидок и акций Bitrix.

Содержание файла класса библиотеки nikolaevevgeFastGetBasePrice.php

У данной библиотеки отсутствуют какие либо настройки, поскольку запрос всегда производится к таблице базы данных MySQL b_catalog_price и указывать Id инфоблока товаров или торговых предложений поэтому не требуется.

Пример работы с библиотекой получения базовой цены в Bitrix

После подключения файла библиотеки Вы можете работать с единственным, на настоящий момент, статическим методом get. Данный метод принимает в первом параметре Id товара или торгового предложения(или значение true - если Вы хотите получить массив всех значений базовых цен товаров и торговых предложений), второй параметр является не обязательным и может быть установлен в true если Вы передали в первом параметре Id товара или торгового предложения и хотите получить базовую цену только для него, таким образом этот параметр ограничит выборку при работе с базой данных только для этого $id. Если же передать в качестве первого параметра true то второй параметр будет в любом случаи установлен в false, не зависимо от Вашего желания. Если метод хоть 1 раз запрашивал цену всех товаров и торговых предложений у базы данных, при повторном обращении к методу запросы к базе отправляться не будут, а будет использован ранее сформированный массив цен.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: