Yandex Metrika
sanches.free 20 просмотров

Работа со складами и количеством товара

Материал

Работа со складами и количеством товара средствами классов "\Bitrix\Catalog\StoreTable" и "\Bitrix\Catalog\StoreProductTable".

Выборка всех активных складов:

$rsStore = \Bitrix\Catalog\StoreTable::getList(array(
    'filter' => array('ACTIVE'>='Y'),
));
while($arStore=$rsStore->fetch())
{
    print_r($arStore);
}

Фрагмент

Пример результата для одного склада:

Array
(
    [ID] => 12
    [TITLE] => Магазин на Большевиков
    [ACTIVE] => Y
    [ADDRESS] => пр. Большевиков, д. 9 к. 1
    [DESCRIPTION] => Вс(12:00-07:00) Пн-Сб(12:00-08:00)
    [GPS_N] => 59.312447564205
    [GPS_S] => 30.253246999999
    [IMAGE_ID] => 
    [LOCATION_ID] => 
    [DATE_MODIFY] => Bitrix\Main\Type\DateTime Object
        (
            [value:protected] => DateTime Object
                (
                    [date] => 2018-06-01 18:05:03.000000
                    [timezone_type] => 3
                    [timezone] => Europe/Moscow
                )

        )

    [DATE_CREATE] => Bitrix\Main\Type\DateTime Object
        (
            [value:protected] => DateTime Object
                (
                    [date] => 2017-12-28 19:24:22.000000
                    [timezone_type] => 3
                    [timezone] => Europe/Moscow
                )

        )

    [USER_ID] => 
    [MODIFIED_BY] => 
    [PHONE] => (023) 124-44-15
    [SCHEDULE] => пн-сб с 11:00 до 20:00, вс в 11:00 до 19:00
    [XML_ID] => 000000004
    [SORT] => 100
    [EMAIL] => 
    [ISSUING_CENTER] => Y
    [SHIPPING_CENTER] => Y
    [SITE_ID] => 
    [CODE] => 
)

Фрагмент

Получение информации о складе с идентификатором в переменной $storeId:

$arStore = \Bitrix\Catalog\StoreTable::getById($storeId)->fetch();

Фрагмент

Выборка всех полей, включая пользовательские, склада и идентификатором в переменной $storeId:

$arStore = \Bitrix\Catalog\StoreTable::getList(array(
    'filter'=>array('=ID'=>$storeId),
    'select'=>array('*','UF_*'),
))->fetch();

Фрагмент

Выборка количества товара с идентификатором в $productId на всех активных складах:

$rsStoreProduct = \Bitrix\Catalog\StoreProductTable::getList(array(
    'filter' => array('=PRODUCT_ID'=>$productId,'STORE.ACTIVE'=>'Y'),
));

while($arStoreProduct=$rsStoreProduct->fetch())
{
    print_r($arStoreProduct);
}
/*
Array
(
    [ID] => 243995
    [STORE_ID] => 3
    [PRODUCT_ID] => 16060
    [AMOUNT] => 4
)
*/

Фрагмент

Выборка количества товара с идентификатором в $productId на всех активных складах (дополнительно выбираем название склада):

$rsStoreProduct = \Bitrix\Catalog\StoreProductTable::getList(array(
    'filter' => array('=PRODUCT_ID'=>$productId,'STORE.ACTIVE'=>'Y'),
    'select' => array('AMOUNT','STORE_ID','STORE_TITLE' => 'STORE.TITLE'),
));

while($arStoreProduct=$rsStoreProduct->fetch())
{
    print_r($arStoreProduct);
}

Фрагмент

Выборка количества товара с идентификатором в $productId на складе с идентификатором в $storeId (дополнительно выбираем название склада и название товара):

$rsStoreProduct = \Bitrix\Catalog\StoreProductTable::getList(array(
    'filter' => array('=PRODUCT_ID'=>$productId,'=STORE_ID'=>$storeId),
    'limit' => 1,
    'select' => array('AMOUNT','STORE_TITLE' => 'STORE.TITLE', 'PRODUCT_NAME' => 'PRODUCT.IBLOCK_ELEMENT.NAME'),
));

if($arStoreProduct=$rsStoreProduct->fetch())
{
    print_r($arStoreProduct);
}

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии