Пытаюсь изменить коэффициент единицы измерения в обработчике события 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); } } |
Предполагаю, что коэффициент перезатирается после срабатывания обработчика.
Скажите, пожалуйста, как можно решить эту проблему?
Буду благодарен за любой совет.