Проверяем наличие товара на складе

223
Алексей,
Проверяем наличие товара на складе

Хоть в битрикс склады и используются только для вывода информации, многие их переделывают под реальные задачи. Например для вывода доступности в регионах (несколько складов под каждый регион). Ядро позволяет очень гибко проверить наличие на складах, покажу на примерах.

Хоть в битрикс склады и используются только для вывода информации, многие их переделывают под реальные задачи. Например для вывода доступности в регионах (когда каждый регион свой склад). Ядро битрикс позволяет гибко проверить наличие на складах, покажу на примерах.

Запрос для выборки товаров, которых на определённом складе больше 0:

$dbItems = CIBlockElement::GetList(
	array(),
	array('IBLOCK_ID' => $iblockId, '>STORE_AMOUNT' => 0, 'STORE_NUMBER' => $storeId),
	false,
	false,
	array('ID', 'NAME', 'IBLOCK_ID')
);

Можно обойтись без доп. запросов и использовать доп. фильтр компонентов

global $arStoreFilter;
$arStoreFilter = array(
	'>STORE_AMOUNT_'.$storeId => $storeId
);

В запросах к инфоблокам вы можете использовать поля:

STORE_NUMBER - Идентификатор склада.
STORE_AMOUNT - Количество на складе.
STORE_AMOUNT_ИДсклада - Количество на конкретном складе.

Преимущество в том, что это стандартные методы, в которых вы так же можете использовать в фильтре: свойства товаров, подзапросы, сложную логику и т.д.

Например, запрос для выборки товаров, которых на нескольких определённых складах больше 0, при этом у товаров отмечено свойство "Экспресс доставка":

$dbItems = CIBlockElement::GetList(
	array(),
	array(
		'IBLOCK_ID' => $iblockId,
		'PROPERTY_EXPRESS_DELIVERY' => 'Y',
		array(
			'LOGIC' => 'OR',
			array('>STORE_AMOUNT_'.$storeMskId => 0),
			array('>STORE_AMOUNT_'.$storeSpbId => 0)
		),
		false,
		false,
		array('ID', 'NAME', 'IBLOCK_ID')
	)
);
while($arItem = $dbItems->GetNext()) {
	var_dump($arItem);
}
Опубликовано 7 сентября 2021 | Обновлено 26 октября 2021
склады, интернет-магазин, разработчику, примеры кода
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
Хоть в битрикс склады и используются только для вывода информации, многие их переделывают под реальные задачи. Например для вывода доступности в регионах (несколько складов под каждый регион). Ядро позволяет очень гибко проверить наличие на складах, покажу на примерах.