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

GetList

Описание

CDBResult CUser::GetList(
	mixed &by = "timestamp_x",
	string &order = "desc",
	array filter = array(),
	array arParams=array()
)

Возвращает список пользователей в виде объекта класса CDBResult. Статический метод.

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

Параметры

ПараметрОписание С версии
byссылка на переменную с полем для сортировки, может принимать значения:
  • id - ID пользователя
  • active - активность
  • last_login - дата последней авторизации
  • login - имя входа Если у вас задача найти пользователя именно по логину, то используйте CUser::GetByLogin. Этот метод ищет точное совпадение с логином.
  • email - E-Mail адрес
  • name - имя
  • ntopcount - параметр постраничной навигации, ограничивающий количество возвращаемых элементов
  • last_name - фамилия
  • timestamp_x - дата изменения
  • date_register - дата регистрации
  • personal_profession - профессия
  • personal_www - WWW-страница
  • personal_icq - номер ICQ
  • personal_gender - пол ("M" - мужской; "F" - женский)
  • personal_birthday - день рождения
  • personal_photo - ID файла-фотографии
  • personal_phone - номер телефона
  • personal_fax - номер факса
  • personal_mobile - номер мобильного
  • personal_pager - номер пейджера
  • personal_street - улица
  • personal_mailbox - почтовый ящик
  • personal_city - город
  • personal_state - область / край
  • personal_zip - почтовый индекс
  • personal_country - код страны
  • personal_notes - дополнительные заметки
  • work_company - наименования компании
  • work_department - отдел
  • work_position - должность
  • work_www - WWW-страница компании
  • work_phone - рабочий телефон
  • work_fax - рабочий факс
  • work_pager - рабочий пейджер
  • work_street - улица компании
  • work_mailbox - почтовый ящик компании
  • work_city - город компании
  • work_state - область / край компании
  • work_zip - почтовый индекс компании
  • work_country - код страны компании
  • work_profile - направление деятельности компании
  • work_notes - дополнительные заметки касаемо места работы
  • admin_notes - комментарий администратора

Начиная с версии ядра 11.0.13 в параметре можно передавать массив вида array("field1"=>"asc", "field2"=>"desc") для множественной сортировки. Значения ключей массива совпадают с перечисленными выше.

оrderСсылка на переменную с порядком сортировки, может принимать значения:
  • asc - по возрастанию
  • desc - по убыванию

При использовании массива в параметре by данный параметр игнорируется. Значения c nulls не работают, например: desc,nulls.

filterМассив для фильтрации пользователей. (Типы фильтрации) В массиве допустимы следующие индексы:
  • 1ID - по ID пользователя
  • XML_ID - по XML_ID пользователя
  • TIMESTAMP_1 - дата изменения профайла пользователя "с"
  • TIMESTAMP_2 - дата изменения профайла пользователя "по"
  • LAST_LOGIN_1 - дата последнего логина пользователя "с"
  • LAST_LOGIN_2 - дата последнего логина пользователя "по"
  • LAST_ACTIVITY - интервал в секундах
  • ACTIVE - фильтр по активности (Y|N)
  • 1LOGIN_EQUAL - по имени входа (ищет прямое совпадение с логином)
  • 1LOGIN - по имени входа (ищет подстроку в логине)
  • 1NAME - по имени и фамилии
  • 1EMAIL - по E-Mail адресу
  • 1COUNTRY_ID - по коду страны, оставлен для обратной совместимости. Сейчас при его использовании производится фильтрация по WORK_COUNTRY.
  • GROUPS_ID - по группам (массив с кодами групп пользователей)
  • PERSONAL_BIRTHDAY_1 - день рождения "с"
  • PERSONAL_BIRTHDAY_2 - день рождения "по"
  • 1KEYWORDS - по нижеследующим полям профайла помеченных символом - *
  • 1* PERSONAL_PROFESSION - профессия
  • 1* PERSONAL_WWW - WWW-страница
  • 1* PERSONAL_ICQ - номер ICQ
  • 1* PERSONAL_GENDER - пол ("M" - мужской; "F" - женский)
  • 1* PERSONAL_PHOTO - ID файла - фотографии (таблица b_file)
  • 1* PERSONAL_PHONE - номер телефона
  • 1* PERSONAL_FAX - номер факса
  • 1* PERSONAL_MOBILE - номер мобильного
  • 1* PERSONAL_PAGER - номер пейджера
  • 1* PERSONAL_STREET - улица
  • 1* PERSONAL_MAILBOX - почтовый ящик
  • 1* PERSONAL_CITY - город
  • 1* PERSONAL_STATE - область / край
  • 1* PERSONAL_ZIP - почтовый индекс
  • 1* PERSONAL_COUNTRY - код страны (хранится в файлах \bitrix\modules\main\lang\ru\tools.php, \bitrix\modules\main\lang\en\tools.php)
  • 1* PERSONAL_NOTES - дополнительные заметки
  • 1* WORK_COMPANY - наименования компании
  • 1* WORK_DEPARTMENT - отдел
  • 1* WORK_POSITION - должность
  • 1* WORK_WWW - WWW-страница компании
  • 1* WORK_PHONE - рабочий телефон
  • 1* WORK_FAX - рабочий факс
  • 1* WORK_PAGER - рабочий пейджер
  • 1* WORK_STREET - улица компании
  • 1* WORK_MAILBOX - почтовый ящик компании
  • 1* WORK_CITY - город компании
  • 1* WORK_STATE - область / край компании
  • 1* WORK_ZIP - почтовый индекс компании
  • 1* WORK_COUNTRY - код страны компании (хранится в файлах \bitrix\modules\main\lang\ru\tools.php, \bitrix\modules\main\lang\en\tools.php)
  • 1* WORK_PROFILE - направление деятельности компании
  • 1* WORK_NOTES - дополнительные заметки касаемо места работы
  • 1* ADMIN_NOTES - комментарий администратора (доступен для просмотра и редактирования только администратору сайта)
1 - в данных полях допускается сложные условия. Сложные условия для данного поля работают только при указании: ID. При указании !ID и >ID, сложные условия работать не будут.
* - поиск по "KEYWORDS" по сути является поиском по полям отмеченных символом "*"

В фильтре можно использовать и пользовательские поля, типа UF_*.

arParametersМассив с дополнительными параметрами метода. Может содержать ключи:

SELECT - массив с идентификаторами пользовательских полей для их выборки в результат, например array("UF_TEXT_1", "UF_STRUCTURE"). Для указания выборки всех полей используйте маску: array("UF_*").

NAV_PARAMS - массив с параметрами навигации, может использоваться для ограничения размера выборки. Например: array("nPageSize"=>"20"). При указании NAV_PARAMS строится ограниченный по размеру список результатов, учитывающий номер страницы в постраничной навигации (для mysql выборка производится с указанием limit). С версии ядра 11.0.14 в массиве можно указать параметр "nTopCount" для ограничения выборки по количеству записей.

FIELDS (с версии ядра 11.0.13) - массив с идентификаторами полей для выборки. Если не указан или пустой, то выбираются все поля. Возможные значения:

ID PERSONAL_WWW PERSONAL_ZIP IS_ONLINE
ACTIVE PERSONAL_ICQ PERSONAL_COUNTRY WORK_CITY
LAST_LOGIN PERSONAL_GENDER PERSONAL_NOTES WORK_STATE
LOGIN PERSONAL_PHOTO WORK_COMPANY WORK_ZIP
EMAIL PERSONAL_PHONE WORK_DEPARTMENT WORK_COUNTRY
NAME PERSONAL_FAX WORK_POSITION WORK_PROFILE
LAST_NAME PERSONAL_MOBILE WORK_WWW WORK_NOTES
SECOND_NAME PERSONAL_PAGER WORK_PHONE ADMIN_NOTES
TIMESTAMP_X PERSONAL_STREET WORK_FAX XML_ID
PERSONAL_BIRTHDAY PERSONAL_MAILBOX WORK_PAGER PASSWORD
DATE_REGISTER PERSONAL_CITY WORK_STREET LOGIN_ATTEMPTS
PERSONAL_PROFESSION PERSONAL_STATE WORK_MAILBOX STORED_HASH
CHECKWORD_TIME EXTERNAL_AUTH_ID CONFIRM_CODE TITLE
LAST_ACTIVITY_DATE AUTO_TIME_ZONE TIME_ZONE LID Не рекомендуется устанавливать 'LID' => SITE_ID. В этом случае в запросе будет (upper(U.LID) like upper('%s1%').

Лучше использовать новое ядро: \Bitrix\Main\UserTable::getList(array("filter"=>array("=LID" => 's1'))); .
CHECKWORD
6.0.2

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

<?
$filter = Array
(
	"ID"                  => "1 | 2",
	"TIMESTAMP_1"         => "04.02.2004", // в формате текущего сайта
	"TIMESTAMP_2"         => "04.02.2005",
	"LAST_LOGIN_1"        => "01.02.2004",
	"ACTIVE"              => "Y",
	"LOGIN"               => "nessy | admin",
	"NAME"                 => "Виталий & Соколов",
	"EMAIL"               => "mail@server.com | mail@server.com",
	"KEYWORDS"            => "www.bitrix.ru",
	"PERSONAL_PROFESSION" => "системотехник",
	"PERSONAL_GENDER"     => "M",
	"PERSONAL_COUNTRY"    => "4 | 1", // Беларусь или Россия
	"ADMIN_NOTES"         => "\"UID = 145\"",
	"GROUPS_ID"           => Array(1,4,10)
);
$rsUsers = CUser::GetList(($by="personal_country"), ($order="desc"), $filter); // выбираем пользователей
$is_filtered = $rsUsers->is_filtered; // отфильтрована ли выборка ?
$rsUsers->NavStart(50); // разбиваем постранично по 50 записей
echo $rsUsers->NavPrint(GetMessage("PAGES")); // печатаем постраничную навигацию
while($rsUsers->NavNext(true, "f_")) :
	echo "[".$f_ID."] (".$f_LOGIN.") ".$f_NAME." ".$f_LAST_NAME."<br>";	
endwhile;
?>

Пример нерабочего вызова, так как оба параметра передаются по значению:

$rsUsers = CUser::GetList(array('sort' => 'asc'), 'sort');

Пример рабочего вызова:

$order = array('sort' => 'asc');
$tmp = 'sort'; // параметр проигнорируется методом, но обязан быть
$rsUsers = CUser::GetList($order, $tmp);

Для фильтрации пользователей с незаполненным полем Город (для других текстовых полей - аналогично):

$filter = array("PERSONAL_CITY" => " ~_% ");


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

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

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

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Артемий Зайцев
Сообщение не промодерировано, возможны ошибки и неточности.
В документации устаревшее:
Код
CDBResult CUser::GetList(
   mixed &by = "timestamp_x",
   string &order = "desc",
   array filter = array(),
   array arParams=array()
)

Актуальное определение в версии 24.200.100
Код
public static function GetList($by = '', $order = '', $arFilter = [], $arParams = [])
{
}

$by и $order не по ссылке, arFilter вместо filter

При использовании записи PHP8 с перечислением параметров по имени: "filter" работать не будет

Код
Код:
$res = CUser::getList(
    filter: [
        'ACTIVE' => 'Y',
    ],
    arParams: [
        'FIELDS' => ['ID', 'NAME', "LOGIN"]
    ],
);
while ($arUser = $res->fetch()) {
    $allUsers[$arUser['ID']] = [
        'LOGIN' => $arUser['LOGIN'],
    ];
}
надо arFilter
Код
Код:
$res = CUser::getList(
    arFilter: [
        'ACTIVE' => 'Y',
    ],
    arParams: [
        'FIELDS' => ['ID', 'NAME', "LOGIN"]
    ],
);
while ($arUser = $res->fetch()) {
    $allUsers[$arUser['ID']] = [
        'LOGIN' => $arUser['LOGIN'],
    ];
}
0
Екатерина Карелина
Сообщение не промодерировано, возможны ошибки и неточности.
Выбираем поочередно активных пользователей, у которых поле "UF_DEPARTMENT" не пустое (пользовательское свойство - массив):
Код
<?
$arParams["FIELDS"] = Array("ID", "ACTIVE", "NAME", "LAST_NAME", "SECOND_NAME");
$arParams["SELECT"] = Array("UF_DEPARTMENT");
$filter = Array("ACTIVE"=>"Y", "!UF_DEPARTMENT"=>false);
$rsUsers = CUser::GetList(($by="id"), ($order="desc"), $filter, $arParams);

while($res = $rsUsers->GetNext())
{
    echo "<pre>";
    print_r($res);
    echo "</pre>";
   
}?>

На выходе получаем массив вида:
Код
Array
(
    [ID] => 999999
    [~ID] => 999999
    [ACTIVE] => Y
    [~ACTIVE] => Y
    [NAME] => Имя
    [~NAME] => Имя
    [LAST_NAME] => Фамилия
    [~LAST_NAME] => Фамилия
    [SECOND_NAME] => Отчество
    [~SECOND_NAME] => Отчество
    [UF_DEPARTMENT] => Array
        (
            [0] => 123123
        )

    [~UF_DEPARTMENT] => Array
        (
            [0] => 123123
        )

)
1
Сергей Зверев
Сообщение не промодерировано, возможны ошибки и неточности.
Код
$filter = Array
(
"ID" => "1 | 2",
"TIMESTAMP_1" => "04.02.2004", // в формате текущего сайта
"TIMESTAMP_2" => "04.02.2005",
"LAST_LOGIN_1" => "01.02.2004",
"ACTIVE" => "Y",
"LOGIN" => "nessy | admin",
"NAME" => "Виталий & Соколов",
"EMAIL" => "mail@server.com | mail@server.com",
"KEYWORDS" => "www.bitrix.ru",
"PERSONAL_PROFESSION" => "системотехник",
"PERSONAL_GENDER" => "M",
"PERSONAL_COUNTRY" => "4 | 1", // Беларусь или Россия
"ADMIN_NOTES" => "\"UID = 145\"",
"GROUPS_ID" => Array(1,4,10) );$rsUsers = CUser::GetList(($by="personal_country"), ($order="desc"), $filter); // выбираем пользователей
while($arUser = $rsUsers->Fetch()){
$arUser
};
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх