Чтобы в битриксе программно изменить коэффициент единицы измерения, добавим в init.php событие OnAfterIBlockElementUpdate. В нашем случае, событие отрабатывает после импорта каталога товаров их 1С.
Будем проверять единицу измерения, если это м2, то изменим коэфициент с 1 на 0.001.
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockElementUpdateHandler");
function OnAfterIBlockElementUpdateHandler(&$arFields)
{
\Bitrix\Main\Loader::includeModule('catalog');
// проверяем единицы измерения, если == м2, то изменяем коэфициент с 1 на 0.001
if(CModule::IncludeModule("sale") && CModule::IncludeModule("iblock"))
{
$db_propss = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array("sort" => "asc"), Array("CODE"=>"CML2_BASE_UNIT"));
if($ar_propss = $db_propss->Fetch())
$EDINICA_IZMERENIA = intval($ar_propss["DESCRIPTION"]);
if($EDINICA_IZMERENIA == 7){
$r = CCatalogMeasureRatio::getList ( $arOrder = array(), $arFilter = array("PRODUCT_ID" => $arFields["ID"]), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array() );
if($ar_r = $r->GetNext())
{
if($ar_r[RATIO] != '0.001')
{
$db_res = CCatalogMeasureRatio::update($ar_r["ID"], array("RATIO" => 0.001));
}
}
}
}
}
Теги: CCatalogMeasureRatio, коэффициент единицы измерения, OnAfterIBlockElementUpdateТеги: CCatalogMeasureRatio, коэффициент единицы измерения, OnAfterIBlockElementUpdate
19.02.2020