Прошу помощи!
Пишу обработчик на событие OnAfterIBlockElementUpdate - цель: обновить количество товара на определенном складе сразу после изменения элемента.
На обычной странице код отрабатывает успешно и отдает true - количество меняется и все хорошо. Но, когда этот код переношу в init.php происходит чудо - все так же отрабатывает метод CCatalogStoreProduct::UpdateFromForm с результатом true, однако в элементе значение не изменяется!
Вот код
Пишу обработчик на событие OnAfterIBlockElementUpdate - цель: обновить количество товара на определенном складе сразу после изменения элемента.
На обычной странице код отрабатывает успешно и отдает true - количество меняется и все хорошо. Но, когда этот код переношу в init.php происходит чудо - все так же отрабатывает метод CCatalogStoreProduct::UpdateFromForm с результатом true, однако в элементе значение не изменяется!
Вот код
Код |
---|
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "UpdateStore"); function UpdateStore(&$arFields) { global $APPLICATION; CModule::IncludeModule('iblock'); if(in_array(483, $arFields["IBLOCK_SECTION"])) { $ID = $arFields["ID"]; $ar_res = CCatalogProduct::GetByID($ID); $QUANTITY = $ar_res["QUANTITY"];// доступное количество $storeRes = CCatalogStoreProduct::GetList( array("SORT" => "ASC"), # сортировка array("PRODUCT_ID" => $ID, "STORE_ID"=>5 ), # отбор по фильтру false, # группировка по полям false, # параметры выборки array("*") # поля для выборки ); while($arStoreParam = $storeRes->Fetch()){ $STORE_ID=$arStoreParam["STORE_ID"]; $STORE_QUANTITY=$arStoreParam["AMOUNT"];// количество на складе } if($QUANTITY!=$STORE_QUANTITY){ $arField = Array( "PRODUCT_ID" => $ID, "STORE_ID" => 5, "AMOUNT" => $QUANTITY, ); $IDstore = CCatalogStoreProduct::UpdateFromForm($arField);// обновим количество на складе Auto } } } |