Окончательный вариант для моих условий, который подошел.
Код |
---|
//наличие по остаткам для умного фильтра //создано свойство "Размеры в наличии" id=668 в которое по условию наличия ТП записывается размер из свойства "VSE_RAZMERI" и выводится в фильтре AddEventHandler("iblock", "OnSuccessCatalogImport1C", Array("ProductQuantityClass", "OnBeforeProductUpdateQuan")); AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("ProductQuantityClass", "OnBeforeProductUpdateQuan")); AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("ProductQuantityClass", "OnBeforeProductUpdateQuan")); class ProductQuantityClass { function OnBeforeProductUpdateQuan(&$arFields) { $elem = $arFields[ID]; $iblock = $arFields['IBLOCK_ID']; $ar_res = CCatalogProduct::GetByID($elem); $QUANTITY = $ar_res["QUANTITY"];// доступное количество CModule::IncludeModule("iblock"); $db_props = CIBlockElement::GetProperty(10, $elem, array("sort" => "asc"), Array("CODE"=>"VSE_RAZMERI")); if($ar_props = $db_props->Fetch()) $razmer = ($ar_props["VALUE_ENUM"]); //значение размера из типа Список if($QUANTITY == 0) { $arLoadProductArray = Array(668 => false); // id нового свойства } else { $arLoadProductArray = Array(668 => $razmer); } CIBlockElement::SetPropertyValuesEx($elem, $iblock, $arLoadProductArray); } } |