Иногда требуется предотвратить срабатывание событий в различных методах системы. До момента реализации встроенного функционала разработчики пишут собственные методы для обхода этого ограничения.
Пример реализации — редактирование полей пользователя через прямой запрос к базе данных, минуя вызов CUser::Update() и связанные с ним события:
function updateUserField($i_UserID, $ar_Fields)
{
$ID = intval($i_UserID);
if(intval($ID) <= 0 || count($ar_Fields) == 0) return false;
global $DB;
$res = $DB->Query("UPDATE b_user SET ".$DB->PrepareUpdate("b_user", $ar_Fields)." WHERE ID=".$ID, true);
return (!$res) ? false : true;
}Функция принимает ID пользователя и массив полей для обновления, формирует и выполняет прямой SQL-запрос через объект $DB. Таким образом события OnBeforeUserUpdate и OnAfterUserUpdate не срабатывают.
