Оглавление:
Функции через API битрикс:
Работа с поставщиками:
CCatalogContractor::update($id, $arFields)
CCatalogContractor::delete($id)
CCatalogContractor::add($arFields)
CCatalogContractor::getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
Пример $arFields(посмотреть доступные поля - /bitrix/modules/catalog/admin/cat_contractor_edit.php)
$arFields = Array(
"PERSON_TYPE" => CONTRACTOR_JURIDICAL,
"COMPANY" => "'ООО' Кролики",
"INN" => "657487877979",
"KPP" => "132435435",
"PERSON_NAME" => "Иванов Иван",
"PHONE" => "+99888535644",
"EMAIL" => "info@mail.com",
"POST_INDEX"=>"1000088",
"ADDRESS" => "ул. Бладпа д.3",
);
Узнать количество товара на складе:
CCatalogStore::GetList(
array arOrder = array(),
array arFilter = array(),
array arGroupBy = false,
array arNavStartParams = false,
array arSelectFields = array()
);
Пример использования:
http://dev.1c-bitrix.ru/community/webdev/user/55997/blog/7325/
Допустим, у нас есть товар с ID=101 и склад 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);
|
В таком случае в фильтре обязательно указывать 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 ))))
Комментариев нет:
Отправить комментарий