[spoiler]
Примерный код:
AddEventHandler("catalog", "OnStoreProductUpdate", Array("MyClass", "NalichieNaSkladah")); class MyClass { // создаем обработчик события function NalichieNaSkladah($ID,$arFields) { if($ID>0) { $elem = $arFields[PRODUCT_ID]; CModule::IncludeModule('catalog'); // $in_nal = NULL; $out_nal = NULL; $arFilter = Array("PRODUCT_ID"=>$elem, '>PRODUCT_AMOUNT' => 0); $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); while ($arRes = $res->GetNext()) { $STORE_LIST[]=$arRes['ID']; // получим данные о наличии на складах данного товара } $in_store = array(12, 13, 14, 16); // проверяем на наличие на "своих складах" foreach ($in_store as $value) { $in_nal = in_array($value, $STORE_LIST); if($in_nal === TRUE){ $nal_prop_array[] = 20204; // добавляем в массив свойство "свои склады" break; } } $out_store = array(1,2,3,4,5,6,7,8,9,10,11); // проверяем на наличие на "чужих складах" foreach ($out_store as $value) { $out_nal = in_array($value, $STORE_LIST); if($out_nal === TRUE){ $nal_prop_array[] = 20203; // добавляем в массив свойство "чужие склады" break; } } if($out_nal=== NULL && $in_nal === NULL){ $nal_prop_array[] = 20205; // добавляем в массив свойство "нет на складе" } CIBlockElement::SetPropertyValuesEx($elem, 12, array(5197 => $nal_prop_array)); // запишем свойство } else { echo '<pre>', print_r('Ошибка изменения элемента'), '</pre>'; } } } |