Блог Горошко Андрея Bitrix24 Получить список пользователей с поиском по персональным данным user.search

Получить список пользователей с поиском по персональным данным user.search

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить список пользователей с поиском по персональным данным user.search», проанализируем лучшие практики и покажем, как правильно использовать битрикс в реальных задачах.

Получить список пользователей с поиском по персональным данным user.search

> Scope: user, user_brief, user_basic
>
> Кто может выполнять метод: любой пользователь

Метод user.search позволяет получить список пользователей с ускоренным поиском по персональным данным (имя, фамилия, отчество, название подразделения, должность). Работает в двух режимах: быстро с помощью Fulltext Index и более медленный вариант через правый LIKE (поддержка определяется автоматически).

Перечень полей пользователей Битрикс24, который будет получен в результате выполнения метода, зависит от скоупа приложения/вебхука. Подробности о доступе к данным пользователей можно узнать в статье.

Метод наследует поведение метода user.get, все параметры из этой функции также доступны.

Параметры метода

Название
тип
Описание
FILTER
string
Массив может содержать поля в любом сочетании:
— NAME — имя
— LAST_NAME — фамилия
— WORK_POSITION — должность
— UF_DEPARTMENT_NAME — название подразделения
— USER_TYPE — тип пользователя. Может принимать следующие значения:
— employee — сотрудник
— extranet — пользователь экстранета
— email — почтовый пользователь

Или FIND — поле, которое будет искать во всех перечисленных полях.

Метод может работать либо с фильтрацией с помощью ключа FIND или со всеми другими полями. Одновременно использовать FIND и любое другое поле нельзя.

sort
string
Поле, по которому сортируются результаты. Сортировка работает по всем полям из user.add
order
string
Направление сортировки:
— ASC — по возрастанию
— DESC — по убыванию
ADMIN_MODE
boolean
Ключ для работы в режиме администратора. Служит для получения данных о любых пользователях
start
integer
Параметр используется для управления постраничной навигацией.

Размер страницы результатов всегда статичный: 50 записей.

Чтобы выбрать вторую страницу результатов, необходимо передавать значение 50. Чтобы выбрать третью страницу результатов — значение 100 и так далее.

Формула расчета значения параметра start:

start = (N-1) * 50, где N — номер нужной страницы

Примеры кода

  • 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
        }
    }

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа, который содержит отфильтрованный список пользователей
total
integer
Общее количество найденных записей
time
time
Информация о времени выполнения запроса

Обработка ошибок

  • [](./user-add)
  • [](./user-update)
  • [](./user-get)
  • [](./user-current)
  • [](./user-fields)

[*ключ_правый LIKE]: USER_NAME LIKE «Текст%» — это называется правый лайк, когда поиск осуществляется только по тексту который начинается на заданную фразу, но может содержать разные окончания — такой поиск существенно быстрее чем у двухстороннего лайка «%текст%» или левостороннего «%текст» — за счет архитектуры хранения идексированных полей в БД.

💡 Экспертное мнение и рекомендации

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к битрикс, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Получить список пользователей с поиском по персональным данным user.search».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Как использовать метод SDK catalog.product.add в Битрикс24Как использовать метод SDK catalog.product.add в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK catalog.product.add в Битрикс24», разберем

Событие после успешной установки приложения OnAppInstallСобытие после успешной установки приложения OnAppInstall

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Событие после успешной установки приложения OnAppInstall». Вы узнаете экспертные методики работы с битрикс

Получить список пользовательских полей компаний по фильтру crm.company.userfi…Получить список пользовательских полей компаний по фильтру crm.company.userfi…

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить список пользовательских полей компаний по фильтру crm.company.userfi…»,