В Битриксе есть возможность фильтровать в комплексном компоненте "Каталог" товары по количеству на том или ином складе.
Достаточно передать в фильтр
$GLOBALS['arrFilter'] = array('>CATALOG_STORE_AMOUNT_ТУТ_ID_СКЛАДА' => 0);
Но есть проблема, которую я не могу решить. Как отфильтровать аналогично товары если я их получаю так:
$productsFilter = array(
'IBLOCK_ID' => $catalogId, // id инфоблока
'SECTION_ID' => $sectionId, // id текущего раздела
'>CATALOG_STORE_AMOUNT_1' => 0,
'INCLUDE_SUBSECTIONS' => 'Y',
'ACTIVE' => 'Y',
'AVAILABLE' => 'Y'
);
$productsResult = CIBlockElement::GetList(
$productsOrder,
$productsFilter,
false,
array("nTopCount" => 3),
array('IBLOCK_ID', 'SECTION_ID', 'ID', 'NAME', 'PRICE_1', 'PRICE_2', )
);
Суть проблемы в том, что если количество товара на данном складе 0, то в выборке его нет, не смотря на то, что его торговые предложения в наличии на данном складе.