Используя приведенный ниже код, можно реализовать ручной пересчет доступного количества товара (значение на вкладке “Параметры” раздела “Торговый каталог” в товаре), исключив из этой суммы какой-либо склад.

В примере исключается склад с ID 1, его можно посмотреть здесь же на вкладке “Склады”. Либо в разделе “Магазин” -> “Складской учет” -> “Склады”.

AddEventHandler("catalog", "OnStoreProductUpdate", "recalculateQuantity");
function recalculateQuantity($id, $arFields) {
CModule::IncludeModule("catalog");
static $handlerDisallow;
if ($handlerDisallow) return;
$rsStoreProduct = \Bitrix\Catalog\StoreProductTable::getList(array(
'filter' => array('=PRODUCT_ID'=> $arFields['PRODUCT_ID'], 'STORE.ACTIVE' => 'Y'),
'select' => array('AMOUNT', 'STORE_ID', 'STORE_TITLE' => 'STORE.TITLE'),
));
$quantity = 0;
while ($arStoreProduct = $rsStoreProduct->fetch()) {
// здесь указываем в примере "1" - ID склада, исключаемого при суммировании доступного количества
if ($arStoreProduct['STORE_ID'] != 1) $quantity += (int)$arStoreProduct['AMOUNT'];
$handlerDisallow = true;
CCatalogProduct::Update(
$arFields['PRODUCT_ID'],
array(
"QUANTITY" => $quantity
)
);
$handlerDisallow = false;
}
}