Документация для разработчиков
Темная тема

Update

Описание и параметры

bool
CUser::Update(
	int id,
	array fields,
	string authActions = true
)

Метод изменяет параметры пользователя с идентификатором id. Возвращает "true", если изменение прошло успешно, при возникновении ошибки метод вернет "false", а в свойстве LAST_ERROR объекта будет содержаться текст ошибки. Если пользователя с указанным id не существует, то ошибки не возникает. Нестатический метод.

Параметры

ПараметрОписаниеС версии
id ID пользователя.
fields Массив значений полей вида array("поле"=>"значение" [, ...]). В качестве полей могут быть использованы все поля CUser, а также GROUP_ID - массив с ID групп пользователей, в которые входит этот пользователь.

Для обновления аватара пользователя (поле PERSONAL_PHOTO) необходимо передавать полный путь к новой загружаемой фотографии на сервере, а не ID загруженного файла.

authActions Авторизовать ли пользователя после обновления данных. По умолчанию - true - не авторизовывать.

Смотрите также

Примеры использования

<?
$user = new CUser;
$fields = Array(
	"NAME"              => "Сергей",
	"LAST_NAME"         => "Иванов",
	"EMAIL"             => "ivanov@microsoft.com",
	"LOGIN"             => "ivan",
	"LID"               => "ru",
	"ACTIVE"            => "Y",
	"GROUP_ID"          => array(1,2),
	"PASSWORD"          => "123456",
	"CONFIRM_PASSWORD"  => "123456",
);
$user->Update($ID, $fields);
$strError .= $user->LAST_ERROR;
?>

Для обновления пользовательского поля, вида "список" (где 11,12,13 - это ID значений списка.):

$user = new CUser;
$fields = Array( 
	"UF_SHOP" => array(11,12,13), 
); 
$user->Update($ID, $fields);


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Максим Игонин
Сообщение не промодерировано, возможны ошибки и неточности.
Если надо очистить пользовательское свойство юзера с типом файл, то не обязательно указывать ID старого файла, например вот так:
Код
$arFile['del'] = "Y";           
$arFile['old_file'] = ИДЕНТИФИКАТОР_ФАЙЛА_КОТОРЫЙ_БУДЕТ_УДАЛЕН;
Достаточно передать:
Код
$arFile['del'] = "Y";
$arFile['tmp_name'] = "";
0
Максим Игонин
Сообщение не промодерировано, возможны ошибки и неточности.
Если надо очистить пользовательское свойство юзера с типом файл, то не обязательно указывать ID старого файла, например вот так:
Код
$arFile["del"] = "Y";           
$arFile["old_file"] = ИДЕНТИФИКАТОР_ФАЙЛА_КОТОРЫЙ_БУДЕТ_УДАЛЕН;
Достаточно передать:
Код
$arFile["del"] = "Y";
$arFile["tmp_name"] = "";
3
Артём Шаповалов
Сообщение не промодерировано, возможны ошибки и неточности.
Изменение полей PASSWORD, EMAIL, LOGIN, ACTIVE вызывает перегенерацию поля CHECKWORD и поскольку метод возвращает только TRUE при успешном выполнении, новый чекворд получить будет невозможно. Если после апдейта нужен новый чекворд для последующих манипуляций, его надо сгенерировать самому и отправить в одном из полей
Код
$password = randString(7, array(
   "abcdefghijknmpqrstuvwxyz",
   "ABCDEFGHJKLNMPQRSTUVWXYZ",
   "23456789!@#$%",
));

$checkword = randString(20);

$fields = array(
   "PASSWORD" => $password, 
   "CONFIRM_PASSWORD" => $password,
   "CHECKWORD" => $checkword         // а иначе в $USER->Update() при изменении поля  PASSWORD сгенерируется свой новый CHECKWORD
);

$USER = new CUser;
if ($USER->Update($arUser['ID'], $fields)) {
   $message = 'Ваш новый пароль: '.$password;   
   $result = $SMS4B->SendSMS($message, $phone); 
   $arFields['CHECKWORD'] = $checkword;  // меняем на новый для дальнейших манипуляций (отправка кода в письме)
} else 
   echo $USER->LAST_ERROR;
7
chsergey
при обновлении пользовательского поля UF_DEPARTMENT использующегося для привязки пользователя к подразделениюнеобходимо чтобы значение поля, передаваемое в функцию CUser::Update было array


Код
            $oUser = new CUser;

            $aFields = array(
                'UF_DEPARTMENT' => array($DEPARTMENT_ID) // <- обязательно array
            );

            $oUser->Update($iUserID, $aFields); //$iUserID (int) ID of USER
 
5
Black-Sun
При обновлении файла, удовлетворяющего требованиям по размеру файла и типу, упорно вылезала ошибка "Неверный тип файла, либо превышен максимальный размер файла!<br>" . Решили слудеющим образом:[COLOR=#191919]
Код
if (!empty($_FILES['Filedata']['tmp_name'&#93) {
                        move_uploaded_file($_FILES["Filedata"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . '/upload/tmp/'. $_FILES["Filedata"]["name"]
                        $arFile = CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'] . '/upload/tmp/'. $_FILES["Filedata"]["name"]
         $arFile['del'] = "Y";           
         $arFile['old_file'] = $UI['PERSONAL_PHOTO']; 
                        $arFile["MODULE_ID"] = "main";
         $fields['PERSONAL_PHOTO'] = $arFile;
      }   

                           
[/COLOR]
10
Дмитрий Яковенко
Если при обновлении данных, вы хотите заменить фотографию пользователя или другую фотку, то в значение (например, PERSONAL_PHOTO) нужно передать массив, описывающий файл и еще два параметра с ключами
Код
    $arFile = CFile::MakeFileArray($value['foto']);
    $arFile['del'] = "Y";           
    $arFile['old_file'] = ИДЕНТИФИКАТОР_ФАЙЛА_КОТОРЫЙ_БУДЕТ_УДАЛЕН; 
13
Григорий Федоринов
Значения пользовательских полей пользователя передаются так же, как и "обычных" полей, например:
"UF_TEXT_1"=>"xxx"
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх