Как оказалось выгрузка из 1С не триггерит эти события. Сохраняешь товар руками \Bitrix\Catalog\MeasureRatio::OnBeforeUpdate работает все обновляет, идет обновление товаров из 1С событие даже не отрабатывает, может я конечно что то делаю не так вот мой код в init.php
Код |
---|
<?
use \Bitrix\Main\EventManager;
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\MeasureRatio::OnBeforeUpdate", function (\Bitrix\Main\Event $event) {
$result = new \Bitrix\Main\Entity\EventResult;
$data = $event->getParameter("fields");
$arSelect = Array("ID","IBLOCK_ID","PROPERTY_CML2_TRAITS");
$arFilter = Array("ID" => $data["PRODUCT_ID"]);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetProperties();
}
if (isset($arFields['CML2_TRAITS']['VALUE'][3])){
$true_coef = str_replace(',','.',$arFields['CML2_TRAITS']['VALUE'][3]);
if ($true_coef!='0') {
$result->modifyFields(array('RATIO' => $true_coef));
} else {
$result->modifyFields(array('RATIO' => 1));
}
AddMessage2Log(array($data["PRODUCT_ID"],$arFields['CML2_TRAITS']['VALUE'][3],$true_coef));
}
return $result;
});
?> |
Не могу понять какие событие использовать чтобы при выгрузке из 1с менять коэффициент на нужный у товара, может быть кто подскажет?