sale.basketitem.list
Получить список элементов (позиций) корзины
Описание
Метод sale.basketitem.list возвращает набор элементов корзины, отобранных по фильтру.
Параметры
select
array
необязательный
Массив со списком полей, которые необходимо выбрать (смотрите поля объекта sale_basket_item).
Если массив не передан или же передан пустой массив, то будут выбраны все доступные поля торговых каталогов
filter
object
необязательный
Объект для фильтрации выбранных записей в формате {"field_1": "value_1", ... "field_N": "value_N"}.
Возможные значения для field соответствуют полям объекта sale_basket_item.
Ключу можно задать дополнительный префикс, уточняющий поведение фильтра. Возможные значения префикса:
- >= — больше либо равно
- > — больше
- <= — меньше либо равно
- < — меньше
- @ — IN, в качестве значения передается массив
- !@ — NOT IN, в качестве значения передается массив
- % — LIKE, поиск по подстроке. Символ % в значении фильтра передавать не нужно. Поиск ищет подстроку в любой позиции строки
- =% — LIKE, поиск по подстроке. Символ % нужно передавать в значении. Примеры:
- "мол%" — ищет значения, начинающиеся с «мол»
- "%мол" — ищет значения, заканчивающиеся на «мол»
- "%мол%" — ищет значения, где «мол» может быть в любой позиции
- %= — LIKE (аналогично =%)
- !% — NOT LIKE, поиск по подстроке. Символ % в значении фильтра передавать не нужно. Поиск идет с обеих сторон
- !=% — NOT LIKE, поиск по подстроке. Символ % нужно передавать в значении. Примеры:
- "мол%" — ищет значения, не начинающиеся с «мол»
- "%мол" — ищет значения, не заканчивающиеся на «мол»
- "%мол%" — ищет значения, где подстроки «мол» нет в любой позиции
- !%= — NOT LIKE (аналогично !=%)
- = — равно, точное совпадение (используется по умолчанию)
- != — не равно
- ! — не равно
order
object
необязательный
Объект для сортировки выбранных записей в формате {"field_1": "order_1", ... "field_N": "order_N"}.
Возможные значения для field соответствуют полям объекта sale_basket_item.
Возможные значения для order:
- asc — в порядке возрастания
- desc — в порядке убывания
start
integer
необязательный
Параметр используется для управления постраничной навигацией.
Размер страницы результатов всегда статичный — 50 записей.
Чтобы выбрать вторую страницу результатов, передайте значение 50. Чтобы выбрать третью страницу результатов — значение 100 и так далее.
Формула расчета значения параметра start:
start = (N-1) * 50, где N — номер нужной страницы
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"select":["id","orderId","productId","name","price","currency"],"filter":{"@orderId":[5147,5146]},"order":{"id":"desc"},"start":0}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.basketitem.list
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"select":["id","orderId","productId","name","price","currency"],"filter":{"@orderId":[5147,5146]},"order":{"id":"desc"},"start":0,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.basketitem.list
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type BasketItemListResult = {
basketItems: {
id: number
orderId: number
productId: number
name: string
price: number
currency: string
}[]
}
try {
// sale.basketitem.list returns a single page (max 50 records). For the whole result set
// use a list helper: $b24.actions.v2.callList.make() returns every record as one
// array, $b24.actions.v2.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `start` variant when sort matters.
const response = await $b24.actions.v2.call.make<BasketItemListResult>({
method: 'sale.basketitem.list',
params: {
select: [
'id',
'orderId',
'productId',
'name',
'price',
'currency',
],
filter: {
'@orderId': [5147, 5146],
},
order: {
id: 'desc',
},
start: 0,
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Basket items:', result.basketItems, 'Count:', result.basketItems.length)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function listBasketItems() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
// sale.basketitem.list returns a single page (max 50 records). For the whole result set
// use a list helper: $b24.actions.v2.callList.make() returns every record as one
// array, $b24.actions.v2.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `start` variant when sort matters.
const response = await $b24.actions.v2.call.make({
method: 'sale.basketitem.list',
params: {
select: [
'id',
'orderId',
'productId',
'name',
'price',
'currency',
],
filter: {
'@orderId': [5147, 5146],
},
order: {
id: 'desc',
},
start: 0,
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Basket items:', result.basketItems, 'Count:', result.basketItems.length)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', listBasketItems)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.sale.basketitem.list(
select=[
"id",
"orderId",
"productId",
"name",
"price",
"currency",
],
filter={
"@orderId": [
5147,
5146,
],
},
order={
"id": "desc",
},
start=0,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'sale.basketitem.list',
[
'select' => [
'id',
'orderId',
'productId',
'name',
'price',
'currency',
],
'filter' => [
'@orderId' => [5147, 5146],
],
'order' => [
'id' => 'desc',
],
'start' => 0,
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
// Нужная вам логика обработки данных
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error: ' . $e->getMessage();
}
BX24.callMethod(
"sale.basketitem.list",
{
select: [
'id',
'orderId',
'productId',
'name',
'price',
'currency',
],
filter: {
'@orderId': [5147, 5146],
},
order: {
id: 'desc',
},
},
)
.then(
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result.data);
if (result.more())
{
result.next();
}
}
},
function(error)
{
console.info(error);
}
);
require_once('crest.php');
$result = CRest::call(
'sale.basketitem.list',
[
'select' => [
'id',
'orderId',
'productId',
'name',
'price',
'currency',
],
'filter' => [
'@orderId' => [5147, 5146],
],
'order' => [
'id' => 'desc',
],
'start' => 0,
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.basketitem.list", b24.Params{
"select": []string{"id", "orderId", "productId", "name", "price", "currency"},
"filter": b24.Params{
"@orderId": []int{5147, 5146},
},
"order": b24.Params{
"id": "desc",
},
"start": 0,
}, b24.WithIdempotent())
if err != nil {
return fmt.Errorf("sale.basketitem.list: %w", err)
}
// Метод заворачивает ответ в объект с ключом "basketItems".
raw, ok := b24.Unwrap(res.Result, "basketItems")
if !ok {
return fmt.Errorf("в ответе нет ключа basketItems")
}
var items []struct {
Currency string `json:"currency"`
ID b24.ID `json:"id"`
Name string `json:"name"`
OrderID b24.ID `json:"orderId"`
Price int `json:"price"`
ProductID b24.ID `json:"productId"`
}
if err := json.Unmarshal(raw, &items); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
for _, it := range items {
fmt.Println(it.Currency)
}
Ответ
HTTP-статус: 200
{
"result": {
"basketItems": [
{
"currency": "RUB",
"id": 6802,
"name": "Стул офисный",
"orderId": 5147,
"price": 1100,
"productId": 4343
},
{
"currency": "RUB",
"id": 6791,
"name": "Стул из каталога",
"orderId": 5146,
"price": 900,
"productId": 0
},
{
"currency": "RUB",
"id": 6770,
"name": "Сборка",
"orderId": 5146,
"price": 1110,
"productId": 4342
}
]
},
"total": 3,
"time": {
"start": 1713958546.058793,
"finish": 1713958548.507179,
"duration": 2.4483859539031982,
"processing": 0.2580289840698242,
"date_start": "2024-04-24T13:35:46+02:00",
"date_finish": "2024-04-24T13:35:48+02:00",
"operating": 0
}
}
Возвращаемые данные
result
object
Корневой элемент ответа
basketItems
sale_basket_item[]
Массив объектов с информацией о выбранных элементах (позициях) корзины заказов
total
integer
Общее количество найденных записей
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error":0,
"error_description":"error"
}
| Код | Описание | Значение |
|---|---|---|
200040300010 |
Недостаточно прав для чтения | |
0 |
Другие ошибки (например, фатальные ошибки) |

