Прошу помощи!
Пишу обработчик на событие 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
}
}
}
|