Для начала вам нужно свойство региона для хранения привязки регионов к складам. Назовём его "ID склада" ("ID_SKLADA"). Если в одном регионе у вас может быть несколько складов, сделайте это свойство множественным.
Сами id складов можно найти на странице Магазин -> Складской учет -> Склады:
Скорее всего каталог у вас выводится посредством компонента bitrix:catalog. У такого компонента (и ряда других) есть параметр "Склады" ("STORES"). Вам нужно передать в него $_SESSION["VREGIONS_REGION"]["ID_SKLADA"]. Сделать это придётся прямо в коде страницы (скорее всего /catalog/index.php). Выглядеть это будет вот так:
Вариант 2. Если у вашего компонента нет параметра "Склады" ("STORES")
Нужен программист!
Тут нужно сделать вставку кода в result_modifier.php компонента, который выводит товары. Для примера вот код с сайта одного из покупателей:
if ($_SESSION["VREGIONS_REGION"]["ID_SKLADA"]){ $rsStore = CCatalogStoreProduct::GetList( array(), array( 'PRODUCT_ID' => $arItem["ID"], 'STORE_ID' => $_SESSION["VREGIONS_REGION"]["ID_SKLADA"] ), false, false, array('AMOUNT') ); if ($arStore = $rsStore->Fetch()){ $arResult['ITEMS'][$index]['CATALOG_QUANTITY'] = $arStore['AMOUNT']; } }
Плюс в массив подключения компонента ($arParams) нужно передать ключ для разделения кеша по регионам.