Хочу изменить значение свойства в зависимости от значения свойства, которое приходит с 1С, в момент изменения товара. Для этого использую событие OnStartIBlockElementUpdate, и почему-то изменяется значение после второго сохранения будто хранит в себе старое значение и его записывает, и только после второго сохранения сохраняет нужное значение.
Как проследить и как исправить такое поведение?
<?
define('CATALOG_IBLOCK_ID', 9);
// Событие при изменении товара в инфоблоке меняет активность в зависимости от значения активности, которое пришло с 1С
AddEventHandler("iblock", "OnStartIBlockElementUpdate", Array("CIBLockHandler", "ChangePropertyActive"));
class CIBLockHandler
{
function ChangePropertyActive(&$arFields)
{
if($arFields['IBLOCK_ID']==CATALOG_IBLOCK_ID){
$db_props = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], array("sort"=>"asc"), array("CODE"=>"AKTIVNOST") );
if($ar_props = $db_props->Fetch()){
$el = new CIBlockElement;
if($ar_props['VALUE_XML_ID']=='true'){
$arFields['ACTIVE'] = 'Y';
}
else
{
$arFields['ACTIVE'] = 'N';
}
}
}
}
}?>