Допустим, у нас есть товар с ID=101 и склад ID=1 и мы хотим узнать какое количество товара находится на этом складе (в качестве бонуса запросим и данные самого склада).
Способ 1. Описан в документации. Используя CCatalogStoreProduct:: GetList по его прямому назначению,
Выберем количество продукта на складе + информацию о складе:
Графиком работы и телефоном почему-то обделили
SQL-запрос:
SELECT CP.ID as ID, CP.PRODUCT_ID as PRODUCT_ID, CP.STORE_ID as STORE_ID, CP.AMOUNT as AMOUNT, CS.TITLE as STORE_NAME, CS.ADDRESS as STORE_ADDR, CS.DESCRIPTION as STORE_DESCR, CS.GPS_N as STORE_GPS_N, CS.GPS_S as STORE_GPS_S, CS.IMAGE_ID as STORE_IMAGE, CS.LOCATION_ID as STORE_LOCATION FROM b_catalog_store_product CP RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID) WHERE ((((CP.PRODUCT_ID = 101 )))) AND ((((CP.STORE_ID = 1 ))))
Способ 2. В документации не описан. Используя класс CCatalogStore:: GetList
Выберем информацию о складе + количество продукта на складе
В таком случае в фильтре обязательно указывать PRODUCT_ID а в $arSelectFields - PRODUCT_AMOUNT
SQL-запрос :
SELECT CS.ID as ID, CS.ACTIVE as ACTIVE, CS.TITLE as TITLE, CS.PHONE as PHONE, CS.SCHEDULE as SCHEDULE, CS.ADDRESS as ADDRESS, CS.DESCRIPTION as DESCRIPTION, CS.GPS_N as GPS_N, CS.GPS_S as GPS_S, CS.IMAGE_ID as IMAGE_ID, DATE_FORMAT(CS.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(CS.DATE_MODIFY, '%d.%m.%Y %H:%i:%s') as DATE_MODIFY, CS.USER_ID as USER_ID, CS.XML_ID as XML_ID, CP.AMOUNT as PRODUCT_AMOUNT FROM b_catalog_store CS LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID=101) WHERE ((((CS.ID = 1 ))))
Способ 1. Описан в документации. Используя CCatalogStoreProduct:: GetList по его прямому назначению,
Выберем количество продукта на складе + информацию о складе:
CModule::IncludeModule('catalog'); $arFilter = Array("PRODUCT_ID"=>101,"STORE_ID"=>1); $res = CCatalogStoreProduct::GetList(Array(),$arFilter,false,false,Array()); if ($arRes = $res->GetNext()) debugmessage($arRes); |
Графиком работы и телефоном почему-то обделили
SQL-запрос:
SELECT CP.ID as ID, CP.PRODUCT_ID as PRODUCT_ID, CP.STORE_ID as STORE_ID, CP.AMOUNT as AMOUNT, CS.TITLE as STORE_NAME, CS.ADDRESS as STORE_ADDR, CS.DESCRIPTION as STORE_DESCR, CS.GPS_N as STORE_GPS_N, CS.GPS_S as STORE_GPS_S, CS.IMAGE_ID as STORE_IMAGE, CS.LOCATION_ID as STORE_LOCATION FROM b_catalog_store_product CP RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID) WHERE ((((CP.PRODUCT_ID = 101 )))) AND ((((CP.STORE_ID = 1 ))))
Способ 2. В документации не описан. Используя класс CCatalogStore:: GetList
Выберем информацию о складе + количество продукта на складе
CModule::IncludeModule('catalog'); $arFilter = Array("PRODUCT_ID"=>101,"ID"=>1); $arSelectFields = Array( "ID", "ACTIVE", "TITLE", "PHONE", "SCHEDULE", "ADDRESS", "DESCRIPTION", "GPS_N", "GPS_S", "IMAGE_ID", "DATE_CREATE", "DATE_MODIFY", "USER_ID", "XML_ID", "PRODUCT_AMOUNT"); $res = CCatalogStore::GetList(Array(),$arFilter,false,false,$arSelectFields); if ($arRes = $res->GetNext()) debugmessage($arRes); |
SQL-запрос :
SELECT CS.ID as ID, CS.ACTIVE as ACTIVE, CS.TITLE as TITLE, CS.PHONE as PHONE, CS.SCHEDULE as SCHEDULE, CS.ADDRESS as ADDRESS, CS.DESCRIPTION as DESCRIPTION, CS.GPS_N as GPS_N, CS.GPS_S as GPS_S, CS.IMAGE_ID as IMAGE_ID, DATE_FORMAT(CS.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(CS.DATE_MODIFY, '%d.%m.%Y %H:%i:%s') as DATE_MODIFY, CS.USER_ID as USER_ID, CS.XML_ID as XML_ID, CP.AMOUNT as PRODUCT_AMOUNT FROM b_catalog_store CS LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID=101) WHERE ((((CS.ID = 1 ))))