Добрый день! Не получается сменить коэф. измерения из св-ва при событиях создания и изменения элемента ифоблока.
Сначала задаю при создании:
Код |
---|
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
)
|
Т.е опять меняется, а в админке без изменений.
Помогите пожалуйста решить проблему. Не понимаю, почему так происходит.