Задать вопрос
lotoseu
@lotoseu

Почему событие OnStartIBlockElementUpdate не меняет значение свойства?

Хочу изменить значение свойства в зависимости от значения свойства, которое приходит с 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';
			}
		}
	  }
  }
}?>
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы