Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить список пользователей с поиском по персональным данным user.search», проанализируем лучшие практики и покажем, как правильно использовать битрикс в реальных задачах.
Получить список пользователей с поиском по персональным данным user.search
> Scope: user, user_brief, user_basic
>
> Кто может выполнять метод: любой пользователь
Метод user.search позволяет получить список пользователей с ускоренным поиском по персональным данным (имя, фамилия, отчество, название подразделения, должность). Работает в двух режимах: быстро с помощью Fulltext Index и более медленный вариант через правый LIKE (поддержка определяется автоматически).
Перечень полей пользователей Битрикс24, который будет получен в результате выполнения метода, зависит от скоупа приложения/вебхука. Подробности о доступе к данным пользователей можно узнать в статье.
Метод наследует поведение метода user.get, все параметры из этой функции также доступны.
Параметры метода
Названиетип | Описание |
|---|---|
FILTERstring | Массив может содержать поля в любом сочетании: — NAME — имя— LAST_NAME — фамилия— WORK_POSITION — должность— UF_DEPARTMENT_NAME — название подразделения— USER_TYPE — тип пользователя. Может принимать следующие значения: — employee — сотрудник— extranet — пользователь экстранета— email — почтовый пользовательИли Метод может работать либо с фильтрацией с помощью ключа FIND или со всеми другими полями. Одновременно использовать FIND и любое другое поле нельзя. |
sortstring | Поле, по которому сортируются результаты. Сортировка работает по всем полям из user.add |
orderstring | Направление сортировки: — ASC — по возрастанию— DESC — по убыванию |
ADMIN_MODEboolean | Ключ для работы в режиме администратора. Служит для получения данных о любых пользователях |
startinteger | Параметр используется для управления постраничной навигацией. Размер страницы результатов всегда статичный: 50 записей. Чтобы выбрать вторую страницу результатов, необходимо передавать значение Формула расчета значения параметра
|
Примеры кода
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"UF_DEPARTMENT": 1,
"SORT": "ID",
"ORDER": "asc",
"start": 10
}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/user.search- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"UF_DEPARTMENT": 1,
"SORT": "ID",
"ORDER": "asc",
"start": 10,
"auth": "**put_access_token_here**"
}' \
https://**put_your_bitrix24_address**/rest/user.search- JS
try
{
const response = await $b24.callMethod(
'user.search',
{
'UF_DEPARTMENT': 1,
'SORT': 'ID',
'ORDER': 'asc',
'start': 10
}
);
const result = response.getData().result;
console.dir(result);
}
catch(error)
{
console.error('Error:', error);
}- PHP
try {
$response = $b24Service
->core
->call(
'user.search',
[
'UF_DEPARTMENT' => 1,
'SORT' => 'ID',
'ORDER' => 'asc',
'start' => 10,
]
);
$result = $response
->getResponseData()
->getResult();
if ($result->error()) {
error_log($result->error());
} else {
echo 'Success: ' . print_r($result->data(), true);
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error searching for users: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
"user.search",
{
"UF_DEPARTMENT": 1,
"SORT": "ID",
"ORDER": "asc",
"start": 10
},
function(result)
{
if(result.error())
console.error(result.error());
else
console.dir(result.data());
}
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'user.search',
[
"UF_DEPARTMENT" => 1,
"SORT" => 'ID',
"ORDER" => 'asc',
"start" => 10
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';Обработка ответа
HTTP-статус: 200
{
"result": [
{
"ID": "1",
"ACTIVE": true,
"NAME": "Вадим",
"LAST_NAME": "Валеев",
"SECOND_NAME": "",
"EMAIL": "v.r.valeev@bitrix.com",
"LAST_LOGIN": "2024-07-25T13:06:54+00:00",
"DATE_REGISTER": "2024-07-15T00:00:00+00:00",
"TIME_ZONE": "",
"IS_ONLINE": "Y",
"TIMESTAMP_X": {
},
"LAST_ACTIVITY_DATE": {
},
"PERSONAL_GENDER": "",
"PERSONAL_WWW": "",
"PERSONAL_BIRTHDAY": "2018-07-14T00:00:00+00:00",
"PERSONAL_MOBILE": "",
"PERSONAL_CITY": "",
"WORK_PHONE": "",
"WORK_POSITION": "",
"UF_EMPLOYMENT_DATE": "",
"UF_DEPARTMENT": [1],
"USER_TYPE": "employee"
},
{
"ID": "3",
"ACTIVE": true,
"NAME": "Иван",
"LAST_NAME": "Иванов",
"EMAIL": "test@gmail.com",
"LAST_LOGIN": "2024-07-24T09:01:55+00:00",
"DATE_REGISTER": "2024-07-22T00:00:00+00:00",
"IS_ONLINE": "N",
"TIMESTAMP_X": {
},
"LAST_ACTIVITY_DATE": {
},
"PERSONAL_GENDER": "",
"PERSONAL_BIRTHDAY": "",
"WORK_POSITION": "",
"UF_EMPLOYMENT_DATE": "",
"UF_DEPARTMENT": [1],
"USER_TYPE": "employee"
}
],
"total": 2,
"time": {
"start": 1721913235.39648,
"finish": 1721913235.45078,
"duration": 0.05430006980896,
"processing": 0.0187909603118897,
"date_start": "2024-07-25T13:13:55+00:00",
"date_finish": "2024-07-25T13:13:55+00:00",
"operating": 0
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultobject | Корневой элемент ответа, который содержит отфильтрованный список пользователей |
totalinteger | Общее количество найденных записей |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
- [](./user-add)
- [](./user-update)
- [](./user-get)
- [](./user-current)
- [](./user-fields)
[*ключ_правый LIKE]: USER_NAME LIKE «Текст%» — это называется правый лайк, когда поиск осуществляется только по тексту который начинается на заданную фразу, но может содержать разные окончания — такой поиск существенно быстрее чем у двухстороннего лайка «%текст%» или левостороннего «%текст» — за счет архитектуры хранения идексированных полей в БД.
💡 Экспертное мнение и рекомендации
Советы эксперта по интеграции:
- Всегда используйте кэширование при частых запросах к битрикс, чтобы разгрузить базу данных.
- Соблюдайте стандарты PSR при написании обработчиков для «Получить список пользователей с поиском по персональным данным user.search».
- Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru