Блог Горошко Андрея 1C-Битрикс,Bitrix24 Получить список остатков по складам по фильтру catalog.storeproduct.list

Получить список остатков по складам по фильтру catalog.storeproduct.list

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить список остатков по складам по фильтру catalog.storeproduct.list», проанализируем лучшие практики и покажем, как правильно использовать catalog.storeproduct.list в реальных задачах.

Получить список остатков по складам по фильтру catalog.storeproduct.list

> Scope: catalog
>
> Кто может выполнять метод: пользователь с правом «Просмотр каталога товаров»

Метод catalog.storeproduct.list возвращает список остатков товаров по складам по фильтру.

Параметры метода

Название
тип
Описание
select
array
Массив со списком полей catalog_storeproduct, которые необходимо выбрать.

Если массив не передан или же передан пустой массив, то будут выбраны все доступные поля остатков

filter
object
Объект для фильтрации выбранных остатков товаров по складам в формате {"field_1": "value_1", ..., "field_N": "value_N"}.

Возможные значения для field соответствуют полям объекта catalog_storeproduct.

Ключу можно задать дополнительный префикс, уточняющий поведение фильтра. Возможные значения префикса:
— >= — больше либо равно
— > — больше
— <= — меньше либо равно
— < — меньше
— @ — IN, в качестве значения передается массив
— !@ — NOT IN, в качестве значения передается массив
— = — равно, точное совпадение, фильтр по умолчанию
— != — не равно
— ! — не равно

order
object
Объект для сортировки выбранных остатков в формате {"field_1": "order_1", ... "field_N": "order_N"}.

Возможные значения для field соответствуют полям объекта catalog_storeproduct.

Возможные значения для order:

— asc — в порядке возрастания
— desc — в порядке убывания

start
integer
Параметр используется для управления постраничной навигацией.

Размер страницы результатов всегда статичный — 50 записей.

Чтобы выбрать вторую страницу результатов, передайте значение 50. Чтобы выбрать третью страницу результатов — значение 100 и так далее.

Формула расчета значения параметра start:

start = (N-1) * 50, где N — номер нужной страницы

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"select":["id","productId","storeId","amount"],"filter":{"productId":6973},"order":{"id":"ASC"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/catalog.storeproduct.list
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"select":["id","productId","storeId","amount"],"filter":{"productId":6973},"order":{"id":"ASC"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/catalog.storeproduct.list
  • JS
    // callListMethod: Получает все данные сразу.
    // Используйте только для небольших выборок (< 1000 элементов) из-за высокой
    // нагрузки на память.

    try {
    const response = await $b24.callListMethod(
        'catalog.storeproduct.list',
        {
        select: [
            'id',
            'productId',
            'storeId',
            'amount'
        ],
        filter: {
            'productId': 6973
        },
        order: {
            'id': 'ASC'
        }
        },
        (progress: number) => { console.log('Progress:', progress) }
    );
    const items = response.getData() || [];
    for (const entity of items) { console.log('Entity:', entity) }
    } catch (error: any) {
    console.error('Request failed', error)
    }

    // fetchListMethod: Выбирает данные по частям с помощью итератора.
    // Используйте для больших объемов данных для эффективного потребления памяти.

    try {
    const generator = $b24.fetchListMethod('catalog.storeproduct.list', {
        select: [
        'id',
        'productId',
        'storeId',
        'amount'
        ],
        filter: {
        'productId': 6973
        },
        order: {
        'id': 'ASC'
        }
    }, 'ID');
    for await (const page of generator) {
        for (const entity of page) { console.log('Entity:', entity) }
    }
    } catch (error: any) {
    console.error('Request failed', error)
    }

    // callMethod: Ручное управление постраничной навигацией через параметр start.
    // Используйте для точного контроля над пакетами запросов.
    // Для больших данных менее эффективен, чем fetchListMethod.

    try {
    const response = await $b24.callMethod('catalog.storeproduct.list', {
        select: [
        'id',
        'productId',
        'storeId',
        'amount'
        ],
        filter: {
        'productId': 6973
        },
        order: {
        'id': 'ASC'
        }
    }, 0);
    const result = response.getData().result || [];
    for (const entity of result) { console.log('Entity:', entity) }
    } catch (error: any) {
    console.error('Request failed', error)
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'catalog.storeproduct.list',
                [
                    'select' => [
                        'id',
                        'productId',
                        'storeId',
                        'amount'
                    ],
                    'filter' => [
                        'productId' => 6973
                    ],
                    'order' => [
                        'id' => 'ASC'
                    ]
                ]
            );

        $result = $response
            ->getResponseData()
            ->getResult();

        echo 'Success: ' . print_r($result, true);
        $result->next();

    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error fetching store products: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'catalog.storeproduct.list',
        {
            select:[
                'id',
                'productId',
                'storeId',
                'amount'
            ],
            filter:{
                'productId': 6973
            },
            order:{
                'id': 'ASC'
            }
        },
        function(result)
        {
            if(result.error())
                console.error(result.error());
            else
                console.log(result.data());
            result.next();
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'catalog.storeproduct.list',
        [
            'select' => [
                'id',
                'productId',
                'storeId',
                'amount'
            ],
            'filter' => [
                'productId' => 6973
            ],
            'order' => [
                'id' => 'ASC'
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "storeProducts": [
            {
                "amount": 54,
                "id": 11,
                "productId": 6973,
                "storeId": 1
            },
            {
                "amount": 14,
                "id": 13,
                "productId": 6973,
                "storeId": 11
            }
        ]
    },
    "total": 2,
    "time": {
        "start": 1758089258.945514,
        "finish": 1758089258.976911,
        "duration": 0.031397104263305664,
        "processing": 0.003245115280151367,
        "date_start": "2025-09-17T09:07:38+03:00",
        "date_finish": "2025-09-17T09:07:38+03:00",
        "operating": 0
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа
storeProducts
catalog_storeproduct[]
Массив объектов с информацией о выбранных остатках товаров по складам, структура зависит от параметра select
total
integer
Общее количество найденных записей
time
time
Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400

{
    "error": 200040300010,
    "error_description": "Access Denied"
}

Возможные коды ошибок

КодОписаниеЗначение
200040300010Access DeniedНедостаточно прав для чтения
0Другие ошибки
  • [](./catalog-store-product-get)
  • [](./catalog-store-product-get-fields)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Получить список остатков по складам по фильтру catalog.storeproduct.list» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Устранение утечек памяти и зависаний PHP-FPM воркеров при обработке каталогаУстранение утечек памяти и зависаний PHP-FPM воркеров при обработке каталога

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Устранение утечек памяти и зависаний PHP-FPM воркеров при обработке каталога» обеспечивает профилирование

Пригласить участников чата imbot.chat.user.addПригласить участников чата imbot.chat.user.add

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Пригласить участников чата imbot.chat.user.add», разберем архитектурные особенности и

Добавить сделку (лид, счет, компред) с товарами, с применением скидок и налоговДобавить сделку (лид, счет, компред) с товарами, с применением скидок и налогов

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Добавить сделку (лид, счет, компред) с товарами, с применением скидок и налогов». Мы подготовили подробный