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