Начиная с 12й версии в интернет-магазине CMS Битрикс доступен функционал учета остатков по складам. Это означает, что если у вас, например, 3 магазина со своими складами, то вы можете создать 3 склада, и остатки по ним будут отображаться и учитываться у каждого товара.
Также склады имеют привязку к сайту, таким образом можно сделать несколько интернет-магазинов, в зависимости от города, например, и каждый будет привязан к своему складу.
Также появился компонент, позволяющий вывести все остатки по складам, для определенного товара, пример вызова:
$APPLICATION -> IncludeComponent ( "bitrix: catalog.store.amount" , "" , Array ( "STORES" => array (), "ELEMENT_ID" => "29" , "ELEMENT_CODE" => "" , "OFFER_ID" => "" , "STORE_PATH" => "/store/store_detail.php" , "CACHE_TYPE" => "A" , "«Наличие товара на складах» , «USER_FIELDS» => массив ( «" , "" ), "FIELDS" => массив ( "TITLE" , "ADDRESS" , "PHONE" , "SCHEDULE" , "" ), "SHOW_EMPTY_STORE " => " Y " , " USE_MIN_AMOUNT " => " Y " , " SHOW_GENERAL_STORE_INFORMATION " => " N " , "MIN_AMOUNT" => "0" ) );
Класс CCatalogStoreProduct позволяет обрабатывать в битрикс остатки по складам, например код:
$arFields = Array( "PRODUCT_ID" => 25, "STORE_ID" => 3, "AMOUNT" => 4, ); $ID = CCatalogStoreProduct::Update(1, $arFields);
задаст количество товара с ID = 25 на складе 3 равным 4.
В админке склады выглядят так:
А вот так остатки по складам выглядят на странице редактирования товара:
Бтрикс остатки по складам позволяют существенно расширить возможности интернет-магазина. При интеграции с 1с каждый товар будет подгружаться с необходимым на складе количеством, что избавит вас от проблем с отсутствием нужного товара на складе, что особенно важно для интеграции с яндекс маркетом.
К примеру, стоит задача вывести на сайте все товары для города Москва, при этом в Москве больше одного склада. Для этого потребуется создать еще одно свойство, к примеру s1_AVAILABLE, а на обработчик добавления или изменения элемента OnBeforeElementAdd/OnBeforeElementUpdate повесить функцию, которая будет складывать значения остатков по определенным складам (относящимся к Москве), и помещать в поле s1_AVAILABLE
А по этому полу сделать фильтр.