Пробую такой код
Код |
---|
<?
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("UpdateDiscountForElement", "OnAfterIBlockElementUpdateHandler"));
class UpdateDiscountForElement
{
function OnAfterIBlockElementUpdateHandler(&$arFields)
{
if(CModule::IncludeModule('catalog') && CModule::IncludeModule('iblock')){
$res = CIBlockElement::GetByID($arFields["ID"]);
if($ar_res = $res->GetNext())
{ $ID_ELEM = $ar_res["ID"];
$IBLOCK_ID = $ar_res["IBLOCK_ID"]; // получим ID инфоблока
}
$db_props = CIBlockElement::GetProperty($IBLOCK_ID, $ID_ELEM, array("sort" => "asc"), array("CODE"=>"PLOSHCHAD_V_UPAKOVKE_KV_M"));
if ($ob = $db_props->GetNext())
{
$ratio = $ob['VALUE_ENUM'];
}
$arOrder = array();
$arFilter = array("ID" => $ID_ELEM);
$arSelectFields = array();
$db_measure = CCatalogMeasureRatio::getList(array(), $arFilter = array('PRODUCT_ID' => $ID_ELEM), false, false); // получим единицу измерения только что созданного товара
while ($ar_measure = $db_measure->Fetch()) {
AddMessage2Log('$armeasure = '.print_r($ar_measure, true),'');
CCatalogMeasureRatio::update($ar_measure["ID"], array("PRODUCT_ID"=>$ID_ELEM, "RATIO"=>$ratio)); // Обновляем коэффициент
}
}
}
}
|
Проблема в том, что не обновляется коэффициент. Пробовал вариации CCatalogMeasureRatio и CCatalogMeasureRatioAll, причем если практически тот же код использовать в отдельном файле, то всё работает, а в init.php ни в какую.
CCatalogMeasureRatio::getList выдает результат
Код |
---|
$armeasure = Array
(
[ID] => 6936
[PRODUCT_ID] => 11437
[RATIO] => 1
)
|
То есть коэффициент уже есть, а вот новый никак не ставится.