ГлавнаяБлогOnAfterUserUpdate не все данные

OnAfterUserUpdate не все данные

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
18 февраля 2014 г.
1 мин чтения

В обработчике события OnAfterUserUpdate в массиве $arFields присутствуют все поля UF_*, но отсутствует значение XML_ID. Это создаёт неудобства, если логика обработчика зависит от этого поля.

Решение — получить недостающее поле отдельным запросом через CUser::GetByID():

function OnAfterUserUpdateHandler(&$arFields)
{
    # Зато б..дь есть все UF_* 
    $_ar = CUser::GetByID($arFields['ID'])->Fetch();
    $arFields['XML_ID'] = $_ar['XML_ID']; 
    self::_handler($arFields, 'update');
}

Из переданного $arFields['ID'] получаем полный набор данных пользователя и дополняем массив полем XML_ID перед передачей в основной обработчик _handler.