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

Июнь 2, 2018

Теги: ORM, Магазин

Работа со складами и количеством товара средствами классов "\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] => (023124-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();

Выборка количества товара с идентификатором в $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);
}

См. также:

← Переход к списку