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

getAvailableQuantityAndPrice

\Bitrix\Sale\Result public
\Bitrix\Catalog\Product\CatalogProvider::getAvailableQuantityAndPrice(
	array $products
);

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

Параметры

ПараметрОписание
$products Массив товаров с идентификаторами товаров в ключах. Для получения цен передают QUANTITY_LIST в формате код позиции корзины => количество. Поле BASKET_CODE задает код позиции корзины

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

Метод возвращает объект \Bitrix\Sale\Result. Ключ PRODUCT_DATA_LIST содержит массивы PRICE_LIST и AVAILABLE_QUANTITY_LIST, сгруппированные по идентификаторам товаров.

Особенности

Метод копирует цены из CATALOG.PRICE_LIST. Если передать только QUANTITY, внутренний расчет размещает цену в отдельных полях товара, поэтому итоговый PRICE_LIST остается пустым. Количество метод получает через getAvailableQuantity: при нескольких складах возвращается первое складское значение, а не сумма. Ошибки вызова getAvailableQuantity не переносятся в итоговый результат.

Пример

<?php
use Bitrix\Catalog\Product\CatalogProvider;
use Bitrix\Main\Loader;

if (!Loader::includeModule('catalog') || !Loader::includeModule('sale'))
{
	throw new RuntimeException('Не удалось подключить модули catalog и sale');
}

// Идентификатор существующего товара
$productId = 123;
$provider = new CatalogProvider([
	'USER_ID' => 1,
	'SITE_ID' => SITE_ID,
	'CURRENCY' => 'RUB',
]);
$result = $provider->getAvailableQuantityAndPrice([
	$productId => [
		'PRODUCT_ID' => $productId,
		'BASKET_CODE' => 'basket-item-1',
		'QUANTITY_LIST' => ['basket-item-1' => 1],
	],
]);

if (!$result->isSuccess())
{
	echo implode(PHP_EOL, $result->getErrorMessages());
	return;
}

print_r($result->getData()['PRODUCT_DATA_LIST'] ?? []);


Была ли эта страница полезна?

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

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

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