Аналогичная задача Видимо подготовка к 2-му экзамену. Не работает Update! Не меняет поле ACTIVE. То же всю голову сломал. Все работает корректно даже $res возвращает true. Может кто подскажет.
[CODE]$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("iblock", "OnBeforeIBlockElementDelete", Array("CIBlockHandler", "OnBeforeIBlockElementDeleteHandler"));
class CIBlockHandler
{
// Обработчик перед удалением элемента каталога
public static function OnBeforeIBlockElementDeleteHandler ($ID)
{
var_dump($ID);
$elements = CIBlockElement::GetList(
'',
[
'IBLOCK_ID' => PRODUCTS_IBLOCK_ID,
'ID' => $ID,
'>SHOW_COUNTER'=> 1,
]
);
if (!$elements->Fetch()){
return;
}
$el = new CIBlockElement;
$res = $el->Update($ID, Array('ACTIVE' => "N"));
if ($res) {
global $APPLICATION;
$APPLICATION->throwException("У этого товара более $ID просмотра.");
return false;
}
}
[/CODE]
[CODE]$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("iblock", "OnBeforeIBlockElementDelete", Array("CIBlockHandler", "OnBeforeIBlockElementDeleteHandler"));
class CIBlockHandler
{
// Обработчик перед удалением элемента каталога
public static function OnBeforeIBlockElementDeleteHandler ($ID)
{
var_dump($ID);
$elements = CIBlockElement::GetList(
'',
[
'IBLOCK_ID' => PRODUCTS_IBLOCK_ID,
'ID' => $ID,
'>SHOW_COUNTER'=> 1,
]
);
if (!$elements->Fetch()){
return;
}
$el = new CIBlockElement;
$res = $el->Update($ID, Array('ACTIVE' => "N"));
if ($res) {
global $APPLICATION;
$APPLICATION->throwException("У этого товара более $ID просмотра.");
return false;
}
}
[/CODE]