Пытаюсь изменить коэффициент единицы измерения в обработчике события
OnAfterIBlockElementUpdate.
Но
значение остается старым.
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "HandlerAfterIBlockElementUpdate");
function HandlerAfterIBlockElementUpdate(&$arFields)
{
//новый коэффициент
$newCoeff = 40;//например
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
CModule::IncludeModule("sale");
$iBlockId = 4;//ИБ
//получаем коэффициент этого товара для изменения
$curElementRatio = CCatalogMeasureRatio::getList(
Array(),
array('IBLOCK_ID' => $iBlockId, 'PRODUCT_ID' => $arFields['ID']),
false, false);
while ($arRatio = $curElementRatio->GetNext()) {
$ratioId = $arRatio['ID'];
$arFieldsNew = Array(
'PRODUCT_ID' => $arFields['ID'],
'RATIO' => $newCoeff,
);
//изменяем кэффициент
CCatalogMeasureRatio::update($ratioId, $arFieldsNew);
}
}
Если код запустить не в обработчике события, а просто скриптом, то коэффициент меняется нормально.
Предполагаю, что коэффициент перезатирается после срабатывания обработчика.
Скажите, пожалуйста, как можно решить эту проблему?
Буду благодарен за любой совет.