GetList
Описание и параметры
CDBResult CSaleBasket::GetList( array arOrder = array(), array arFilter = array(), array arGroupBy = false, array arNavStartParams = false, array arSelectFields = array() );
Метод возвращает результат выборки записей из корзины в соответствии со своими параметрами. Нестатический метод.
Параметры вызова
Параметр | Описание |
---|---|
arOrder | Массив, в соответствии с которым сортируются результирующие записи. Массив имеет вид:
array( "название_поля1" => "направление_сортировки1", "название_поля2" => "направление_сортировки2", . . . )В качестве "название_поляN" может стоять любое поле корзины, а в качестве "направление_сортировкиX" могут быть значения "ASC" (по возрастанию) и "DESC" (по убыванию). Если массив сортировки имеет несколько элементов, то результирующий набор сортируется последовательно по каждому элементу (т.е. сначала сортируется по первому элементу, потом результат сортируется по второму и т.д.). Значение по умолчанию - пустой массив array() - означает, что результат отсортирован не будет. |
arFilter | Массив, в соответствии с которым фильтруются записи корзины. Массив имеет вид:
array( "[модификатор1][оператор1]название_поля1" => "значение1", "[модификатор2][оператор2]название_поля2" => "значение2", . . . )Удовлетворяющие фильтру записи возвращаются в результате, а записи, которые не удовлетворяют условиям фильтра, отбрасываются. Допустимыми являются следующие модификаторы:
Пример фильтра: array("+>=ORDER_ID" => 20)Этот фильтр означает "выбрать все записи, в которых значение в поле ORDER_ID больше или равно 20 либо не установлено (т.е. null или ноль)". Значение по умолчанию - пустой массив array() - означает, что результат отфильтрован не будет. В фильтре также можно использовать параметр USER_ID (не путать с FUSER_ID), передавая в него реальный идентификатор пользователя. Например вот так: '!USER_ID' => false |
arGroupBy | Массив полей, по которым группируются записи корзины. Массив имеет вид:
array("название_поля1", "группирующая_функция2" => "название_поля2", ...)В качестве "название_поляN" может стоять любое поле корзины. В качестве группирующей функции могут стоять:
Значение по умолчанию - false - означает, что результат группироваться не будет. |
arNavStartParams | Массив параметров выборки. Может содержать следующие ключи:
|
arSelectFields | Массив полей записей, которые будут возвращены методом. Можно указать только те поля, которые необходимы. Если в массиве присутствует значение "*", то будут возвращены все доступные поля. Значение по умолчанию - пустой массив array() - означает, что будут возвращены все поля основной таблицы запроса. |
Возвращаемые значения
Возвращается объект класса CDBResult, содержащий набор ассоциативных массивов с ключами:
Ключ | Описание |
---|---|
ID | Код записи. |
PRODUCT_ID | Уникальный в рамках модуля код товара. |
PRODUCT_PRICE_ID | Дополнительный код товара. |
PRICE | Стоимость единицы товара. |
CURRENCY | Валюта стоимости единицы товара. |
WEIGHT | Вес единицы товара. |
QUANTITY | Количество единиц товара. |
LID | Сайт, на котором сделана покупка. |
DELAY | Флаг "товар отложен" (Y/N) |
CAN_BUY | Флаг "товар можно купить" (Y/N) |
NAME | Название товара. |
CALLBACK_FUNC* | Название функции обратного вызова для поддержки актуальности корзины. |
MODULE | Модуль, добавляющий товар в корзину. |
NOTES | Особые заметки, например, тип цены. |
ORDER_CALLBACK_FUNC* | Название функции обратного вызова для оформления заказа. |
ORDER_ALLOW_DELIVERY | Доставка заказа корзины разрешена. (Для корзин, уже привязанных к заказу.) |
ORDER_PAYED | Заказ корзины оплачен. (Для корзин, уже привязанных к заказу.) |
ORDER_PRICE | Стоимость заказа корзины. (Для корзин, уже привязанных к заказу.) |
ORDER_CANCELED | Флаг отмены заказа. |
DETAIL_PAGE_URL | Ссылка на страницу детального просмотра товара. |
FUSER_ID | Внутренний код владельца корзины (не совпадает с кодом пользователя). Может меняться. Такая особенность связана со спецификой сохранения корзин для неавторизованных покупателей. |
USER_ID | Реальный идентификатор пользователя. (не путать с FUSER_ID) |
ORDER_ID | Код заказа, в который вошла эта запись (товар). Для товаров, которые помещены в корзину, но ещё не заказаны, это поле равно NULL. |
DATE_INSERT | Дата добавления товара в корзину. |
DATE_UPDATE | Дата последнего изменения записи. |
CANCEL_CALLBACK_FUNC* | Название функции обратного вызова для отмены заказа. |
PAY_CALLBACK_FUNC* | Название функции обратного вызова, которая вызывается при установке флага заказа "Доставка разрешена". |
PRODUCT_PROVIDER_CLASS** | Имя класса, реализующего интерфейс IBXSaleProductProvider. Торговый каталог записывает в это поле имя класса CCatalogProductProvider. |
DISCOUNT_PRICE | Скидка на товар. Значение устанавливается только после оформления заказа. |
Если в качестве параметра arGroupBy передается пустой массив, то метод вернет число записей, удовлетворяющих фильтру.
* - ключи считаются устаревшими, начиная с версии 12.5.
** - ключ доступен, начиная с версии 12.5.
Обратите внимание, что в корзине могут быть не только товары из инфоблока (вполне может какой-то иной модуль добавлять в корзину товары со своим PRODUCT_ID), поэтому надо смотреть еще поле MODULE (для товаров из инфоблоков оно равно catalog).
Пример использования
Пример до версии 12.5
<? // Выведем актуальную корзину для текущего пользователя $arBasketItems = array(); $dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT") ); while ($arItems = $dbBasketItems->Fetch()) { if (strlen($arItems["CALLBACK_FUNC"]) > 0) { CSaleBasket::UpdatePrice($arItems["ID"], $arItems["CALLBACK_FUNC"], $arItems["MODULE"], $arItems["PRODUCT_ID"], $arItems["QUANTITY"]); $arItems = CSaleBasket::GetByID($arItems["ID"]); } $arBasketItems[] = $arItems; } // Печатаем массив, содержащий актуальную на текущий момент корзину echo "<pre>"; print_r($arBasketItems); echo "</pre>"; ?>
Пример с версии 12.5
<? $arID = array(); $arBasketItems = array(); $dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "PRODUCT_PROVIDER_CLASS") ); while ($arItems = $dbBasketItems->Fetch()) { if ('' != $arItems['PRODUCT_PROVIDER_CLASS'] || '' != $arItems["CALLBACK_FUNC"]) { CSaleBasket::UpdatePrice($arItems["ID"], $arItems["CALLBACK_FUNC"], $arItems["MODULE"], $arItems["PRODUCT_ID"], $arItems["QUANTITY"], "N", $arItems["PRODUCT_PROVIDER_CLASS"] ); $arID[] = $arItems["ID"]; } } if (!empty($arID)) { $dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "ID" => $arID, "ORDER_ID" => "NULL" ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "PRODUCT_PROVIDER_CLASS", "NAME") ); while ($arItems = $dbBasketItems->Fetch()) { $arBasketItems[] = $arItems; } } // Печатаем массив, содержащий актуальную на текущий момент корзину echo "<pre>"; print_r($arBasketItems); echo "</pre>"; ?>
//количество товаров в корзине (без цикла) $cntBasketItems = CSaleBasket::GetList( array(), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), array() );
Чтобы выбрать корзину у не авторизованного пользователя под другим пользователем, необходимо обязательно отдать массив необходимых полей arSelectFields. Например при формировании документа, когда документ формируется из под пользователя сервера.
$dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL", ), false, false, array( "ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE", "CATALOG_XML_ID", "PRODUCT_XML_ID", "SUBSCRIBE", "DISCOUNT_PRICE", "PRODUCT_PROVIDER_CLASS", "TYPE", "SET_PARENT_ID" ) ); while ($arItems = $dbBasketItems->Fetch()) { }
![]()
cd rww
| ||
Получить ID записи в корзине по PRODUCT_ID
| ||
![]()
Ришат Гайсин
|
Доступа выборка по признаку кастомной цены CUSTOM_PRICE
|
![]()
Юрій Солтис
| ||
На D7:
ORM | ||
![]()
Алексей Попович
| ||
для получениня списка товаров, на постулени которых подписался пользователь, необходимо делать выборку с фильтром
| ||
© «Битрикс», 2001-2022, «1С-Битрикс», 2022
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.