Окончательный вариант для моих условий, который подошел.
[CODE]//наличие по остаткам для умного фильтра
//создано свойство "Размеры в наличии" 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);
}
}
[/CODE]
[CODE]//наличие по остаткам для умного фильтра
//создано свойство "Размеры в наличии" 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);
}
}
[/CODE]