Добрый день! Не получается сменить коэф. измерения из св-ва при событиях создания и изменения элемента ифоблока.
Сначала задаю при создании:
Затем при изменении:
Распечатал файл дебага:
При создании:
Значение коэф. при создании вроде как и изменилось ([RATIO] => 20). Но в админке изменений нет... Далее при изменении:
Т.е опять меняется, а в админке без изменений.
Помогите пожалуйста решить проблему. Не понимаю, почему так происходит.
Сначала задаю при создании:
Код |
---|
function OnIBlockElementAfterAddHandler(&$arFields) { if( $arFields["IBLOCK_ID"] == 5) { $res = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"MINIMALNAYA_PARTIYA_OTGRUZKI_SHT_RUL")); $arProps = $res->fetch(); if (strlen($arFields['PROPERTY_VALUES'][$arProps['ID']]['n0']['VALUE']) > 0) { $MeasureVal = $arFields['PROPERTY_VALUES'][$arProps['ID']]['n0']['VALUE']; $ID = CCatalogMeasureRatio::add(Array('PRODUCT_ID' => $arFields['ID'], 'RATIO' => $MeasureVal)); } } } |
Затем при изменении:
Код |
---|
function OnIBlockElementBeforeUpdateHandler(&$arFields) { if( $arFields["IBLOCK_ID"] == 5) { $res = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"MINIMALNAYA_PARTIYA_OTGRUZKI_SHT_RUL")); $arProps = $res->fetch(); if (strlen($arFields['PROPERTY_VALUES'][$arProps['ID']][$arProps['PROPERTY_VALUE_ID']]['VALUE']) > 0) { $MeasureVal = $arFields['PROPERTY_VALUES'][$arProps['ID']][$arProps['PROPERTY_VALUE_ID']]['VALUE']; $db_ratio = CCatalogMeasureRatio::getList(array(), array("PRODUCT_ID" => $arFields["ID"]), false, false); $ar_ratio = $db_ratio->Fetch(); $db_res = CCatalogMeasureRatio::update($ar_ratio["ID"], array("RATIO" => $MeasureVal)); } } } |
Распечатал файл дебага:
При создании:
Код |
---|
св-во при создании: 20 поля коэф измерения при создании: Array ( [ID] => 2161 [PRODUCT_ID] => 2253 [RATIO] => 20 ) |
Значение коэф. при создании вроде как и изменилось ([RATIO] => 20). Но в админке изменений нет... Далее при изменении:
Код |
---|
св-во: 20 поля коэф измерения перед изменением. Почему то меняется айдишник: Array ( [ID] => 2162 [PRODUCT_ID] => 2253 [RATIO] => 1 ) поле перезаписалось, но в админке изменений нет: Array ( [ID] => 2162 [PRODUCT_ID] => 2253 [RATIO] => 20 ) |
Т.е опять меняется, а в админке без изменений.
Помогите пожалуйста решить проблему. Не понимаю, почему так происходит.