Документация для разработчиков

GetList

CDBResult
CCatalogProduct::GetList(
 array arOrder = array(),
 array arFilter = array(),
 array arGroupBy = false,
 array arNavStartParams = false,
 array arSelectFields = array()
);

Метод возвращает результат выборки записей товаров в соответствии со своими параметрами. Нестатический метод.

Метод устарел, рекомендуется вместо него использовать метод \Bitrix\Catalog\ProductTable::getList.

Параметры вызова

ПараметрОписание
arOrder Массив, в соответствии с которым сортируются результирующие записи. Массив имеет вид:
array(
"название_поля1" => "направление_сортировки1",
"название_поля2" => "направление_сортировки2",
. . .
)
В качестве "название_поляN" может стоять любое поле товара, а в качестве "направление_сортировкиX" могут быть значения "ASC" (по возрастанию) и "DESC" (по убыванию).

Если массив сортировки имеет несколько элементов, то результирующий набор сортируется последовательно по каждому элементу (т.е. сначала сортируется по первому элементу, потом результат сортируется по второму и т.д.). 

Значение по умолчанию - пустой массив array() - означает, что результат отсортирован не будет.
arFilter Массив, в соответствии с которым фильтруются записи товара. Массив имеет вид:
array(
"[модификатор1][оператор1]название_поля1" => "значение1",
"[модификатор2][оператор2]название_поля2" => "значение2",
. . .
)
Удовлетворяющие фильтру записи возвращаются в результате, а записи, которые не удовлетворяют условиям фильтра, отбрасываются.

Допустимыми являются следующие модификаторы:
  • ! - отрицание;
  • + - значения null, 0 и пустая строка так же удовлетворяют условиям фильтра.
Допустимыми являются следующие операторы:
  • >= - значение поля больше или равно передаваемой в фильтр величины;
  • > - значение поля строго больше передаваемой в фильтр величины;
  • <= - значение поля меньше или равно передаваемой в фильтр величины;
  • < - значение поля строго меньше передаваемой в фильтр величины;
  • @ - оператор может использоваться для целочисленных и вещественных данных при передаче набора значений (массива). В этом случае при генерации sql-запроса будет использован sql-оператор IN, дающий компактную форму записи;
  • ~ - значение поля проверяется на соответствие передаваемому в фильтр шаблону;
  • % - значение поля проверяется на соответствие передаваемой в фильтр строке в соответствии с языком запросов.
В качестве "название_поляX" может стоять любое поле товара.

Пример фильтра:
array("QUANTITY_TRACE" => "Y")
Этот фильтр означает "выбрать все записи, в которых значение в поле QUANTITY_TRACE (т.е. ведется количественный учет) равно Y".

Значение по умолчанию - пустой массив array() - означает, что результат отфильтрован не будет.
arGroupBy Массив полей, по которым группируются записи типов товара. Массив имеет вид:
array("название_поля1", "название_поля2", . . .)
В качестве "название_поляN" может стоять любое поле типов товара.

Если массив пустой, то метод вернет число записей, удовлетворяющих фильтру.

Значение по умолчанию - false - означает, что результат группироваться не будет.
arNavStartParams Массив параметров выборки. Может содержать следующие ключи:
  • "nTopCount" - количество возвращаемых методом записей будет ограничено сверху значением этого ключа;
  • любой ключ, принимаемый методом CDBResult::NavQuery в качестве третьего параметра.
Значение по умолчанию - false - означает, что параметров выборки нет.
arSelectFields Массив полей записей, которые будут возвращены методом. Можно указать только те поля, которые необходимы. Если в массиве присутствует значение "*", то будут возвращены все доступные поля.

Значение по умолчанию - пустой массив array() - означает, что будут возвращены все поля основной таблицы запроса.

Возвращаемые значения

Объект класса CDBResult, содержащий записи в виде ассоциативных массивов параметров товара с ключами:

Ключ ОписаниеС версии
ID Код товара.
QUANTITY Количество на складе.
QUANTITY_RESERVED Зарезервированное количество.12.5.0
QUANTITY_TRACE Определяет ведется ли количественный учет (Y/N). До версии 12.5.0 параметр назывался "уменьшать количество при оформлении заказа". Оригинальное значение доступно в ключе QUANTITY_TRACE_ORIG.
QUANTITY_TRACE_ORIG Флаг (Y/N/D*) "включить количественный учет".12.0.0
SUBSCRIBE Разрешение/запрет подписки при отсутствии товара (Y/N/D*).14.0.0
WEIGHT Вес единицы товара.14.0.0
WIDTH Ширина товара (в мм).14.0.0
LENGTH Длина товара (в мм).14.0.0
HEIGHT Высота товара (в мм).14.0.0
PRICE_TYPE Тип цены (S - одноразовый платеж, R - регулярные платежи, T - пробная подписка)
RECUR_SCHEME_TYPE Тип периода подписки ("H" - час, "D" - сутки, "W" - неделя, "M" - месяц, "Q" - квартал, "S" - полугодие, "Y" - год)
RECUR_SCHEME_LENGTH Длина периода подписки.
TRIAL_PRICE_ID Код товара, для которого данный товар является пробным.
WITHOUT_ORDER Флаг "Продление подписки без оформления заказа"
TIMESTAMP_X Дата последнего изменения записи. Задается в формате сайта.
VAT_ID Идентификатор ставки НДС.
VAT_INCLUDED Признак включённости НДС в цену (Y/N).
PURCHASING_PRICE Величина закупочной цены.12.5.0
PURCHASING_CURRENCY Валюта закупочной цены.12.5.0
AVAILABLE Флаг доступности товара (Y/N).
CAN_BUY_ZERO Разрешена ли покупка при отсутствии товара (Y/N). Оригинальное значение доступно в ключе CAN_BUY_ZERO_ORIG.12.0.0
CAN_BUY_ZERO_ORIG Флаг (Y/N/D*) "разрешить покупку при отсутствии товара".12.0.0
NEGATIVE_AMOUNT_TRACE_ORIG Флаг (Y/N/D*) "разрешить отрицательное количество товара".12.0.0
TMP_ID Временный строковый идентификатор, используемый для служебных целей.
BARCODE_MULTI (Y/N) Определяет каждый ли экземпляр товара имеет собственный штрихкод.12.5.0
MEASURE ID единицы измерения.14.0.0
TYPE Тип товара. Возможные значения: "1" - "простой товар", "2" - "комплект", "3" - "товар с торговыми предложениями", "4" - "торговое предложение".

До версии 16.0.3 для типа товара "комплект" значение равно "2", во всех других случаях - "1".
14.0.0
ELEMENT_IBLOCK_ID Код инфоблока товара.
ELEMENT_XML_ID Внешний код товара.
ELEMENT_NAME Название товара.
* - значение берется из настроек модуля.

Пример использования

<?
// Выведем коды 10 товаров с самым большим количеством на складе
// из тех, количество которых при заказе должно уменьшаться
$ind = 0;
$db_res = CCatalogProduct::GetList(
        array("QUANTITY" => "DESC"),
        array("QUANTITY_TRACE" => "Y"),
        false,
        array("nTopCount" => 10)
    );
while (($ar_res = $db_res->Fetch()) && ($ind < 10))
{
    echo $ar_res["ID"].", ";
    $ind++;
}
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх