getAvailableQuantityByStore
\Bitrix\Sale\Result public \Bitrix\Catalog\Product\CatalogProvider::getAvailableQuantityByStore( array $products );
Метод рассчитывает доступное количество товаров с разбивкой по складам. Он ограничивает результат общим доступным остатком товара, если включен контроль количества. Нестатический метод.
Параметры
| Параметр | Описание |
|---|---|
$products |
Массив товаров с идентификаторами товаров в ключах. Складские количества передают в QUANTITY_LIST_BY_STORE в формате код позиции корзины => [идентификатор склада => количество]. Для внутреннего расчета данных каталога дополнительно передают QUANTITY_LIST с теми же кодами позиций и суммарным количеством каждой позиции по складам |
Возвращаемое значение
Метод возвращает объект \Bitrix\Sale\Result. Ключ AVAILABLE_QUANTITY_LIST_BY_STORE содержит массив вида идентификатор товара => [идентификатор склада => доступное количество].
Метод распределяет запрошенные количества с учетом общего количества товара и переданного резерва. Он не проверяет фактический остаток на каждом указанном складе. Если количество определить не удалось, складской массив товара может быть пустым; товары без данных каталога могут отсутствовать в результате.
Пример
<?php
use Bitrix\Catalog\Product\CatalogProvider;
use Bitrix\Main\Loader;
if (!Loader::includeModule('catalog') || !Loader::includeModule('sale'))
{
throw new RuntimeException('Не удалось подключить модули catalog и sale');
}
// Идентификаторы существующих товара и склада
$productId = 123;
$storeId = 1;
$provider = new CatalogProvider(['SITE_ID' => SITE_ID]);
$result = $provider->getAvailableQuantityByStore([
$productId => [
'PRODUCT_ID' => $productId,
'BASKET_CODE' => 'basket-item-1',
'QUANTITY_LIST' => ['basket-item-1' => 1],
'QUANTITY_LIST_BY_STORE' => [
'basket-item-1' => [$storeId => 1],
],
],
]);
if (!$result->isSuccess())
{
echo implode(PHP_EOL, $result->getErrorMessages());
return;
}
print_r($result->getData()['AVAILABLE_QUANTITY_LIST_BY_STORE'][$productId] ?? []);
Была ли эта страница полезна?
Что можно улучшить?
Пользовательские комментарии
Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026