Что я делаю не так? В коде ниже в переменную $bxrecRatingVal значение "прилетает" только со второго раза. Т.е. я открываю редактирование элемента, заполняю значение свойства, нажимаю сохранить - в переменной пусто. Захожу снова в редактирование элемента и ничего не меняя жму "Сохранить" ещё раз и тогда в переменную попадает заданное мной значение.
Код |
---|
<?php AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("StartRatingUpdate", "Update")); class StartRatingUpdate { function Update(&$arFields) { if ($arFields['IBLOCK_ID'] == BOXER_IBLOCK_ID) { $db_props = CIBlockElement::GetProperty( $arFields['IBLOCK_ID'], $arFields['ID'], ['sort' => 'asc'], ['CODE' => 'ATT_BXREC_RT'] ); if ($ar_props = $db_props->Fetch()) { $bxrecRatingVal = $arFields['PROPERTY_VALUES'][$ar_props["ID"]][$ar_props["PROPERTY_VALUE_ID"]]['VALUE']; if (!empty($bxrecRatingVal)) { $startRatingCalc = number_format(1000 + 50 * log($bxrecRatingVal), 2, ',', ' '); CIBlockElement::SetPropertyValueCode($arFields['ID'], "ATT_RBX_RT", $startRatingCalc); } } } } } ?> |