Показать диалог множественного выбора пользователей BX24.selectUsers

Выберите инструмент для разработки с AI-агентом:

  • используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
  • используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
BX24.selectUsers(callback: callable): void;
BX24.selectUsers(title: string, callback: callable): void;

Метод BX24.selectUsers показывает стандартный диалог множественного выбора пользователей. Диалог выводит только действующих сотрудников компании: пользователей экстранета и уволенных сотрудников в нем нет.

Диалог рисует сам Битрикс24 поверх фрейма приложения, поэтому приложению не нужно получать список сотрудников. Собственный scope диалогу не нужен — он открывает интерфейс Битрикс24, а не обращается к REST API. Оргструктуру диалог показывает целиком, без ограничения по правам текущего пользователя.

Вызвать метод можно только из приложения, встроенного во фрейм Битрикс24, где подключена библиотека BX24.js.

Вызывайте метод внутри обработчика BX24.init. Сам диалог библиотека до инициализации не откладывает, но функции, которые обычно вызывают из callback, до нее не работают — например BX24.userOption.set.

Диалог множественного выбора создается заново при каждом вызове. Сотрудники, выбранные в прошлый раз, в новом диалоге не отмечены — если выбор нужно сохранить между запусками приложения, храните его сами.

Чтобы выбрать одного сотрудника, используйте BX24.selectUser: он показывает тот же диалог без множественного выбора и отдает один объект вместо массива.

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

Обязательные параметры отмечены *

Название
тип

Описание

title
string

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

callback*
callable

Функция обратного вызова. Получает один параметр — массив объектов с данными выбранных сотрудников (подробное описание)

Примеры кода

Как использовать примеры в документации

Показать диалог и вывести выбранных сотрудников:

BX24.init(() => {
    BX24.selectUsers((selected) => {
        selected.forEach((user) => {
            console.log(user.id, user.name);
        });
    });
});

Собрать идентификаторы сотрудников и сохранить их в настройках пользователя, чтобы не показывать диалог при каждом открытии приложения:

BX24.init(() => {
    BX24.selectUsers((selected) => {
        const ids = selected.map((user) => Number(user.id));

        // пустой выбор не затирает сохраненные идентификаторы
        if (ids.length === 0)
        {
            return;
        }

        BX24.userOption.set('assignees', ids.join(','));
    });
});

Получить карточки выбранных сотрудников методом user.get и собрать ссылки на аватары. Методу нужен один из скоупов user, user_brief или user_basic. За один запрос user.get отдает не больше 50 записей — если сотрудников выбрали больше, дочитайте остальные методом next() результата:

BX24.init(() => {
    BX24.selectUsers((selected) => {
        if (selected.length === 0)
        {
            return;
        }

        const ids = selected.map((user) => Number(user.id));
        const avatars = {};

        selected.forEach((user) => {
            avatars[user.id] = user.photo
                ? 'https://' + BX24.getDomain() + user.photo
                : '';
        });

        BX24.callMethod('user.get', { ID: ids }, (result) => {
            if (result.error())
            {
                console.log(result.error());
                return;
            }

            result.data().forEach((employee) => {
                console.log(employee.EMAIL, avatars[employee.ID]);
            });
        });
    });
});

Обработка ответа

Диалог не возвращает данные напрямую: результат выбора приходит в функцию callback массивом объектов.

Функция callback срабатывает только по кнопке «Выбрать». Закрыть диалог, ничего не выбрав, можно кликом вне окна — крестика у него нет, и клавиша Esc его не закрывает. В этом случае функция не вызывается. При нажатии «Выбрать» без отметок callback получит пустой массив — проверяйте длину массива перед тем, как сохранять результат.

Порядок объектов в массиве не зависит от порядка выбора: сотрудники идут по возрастанию идентификатора. Определяйте сотрудника по полю id, а не по позиции в массиве.

[
    {
        "id": "1",
        "name": "Иван Иванов",
        "sub": false,
        "sup": true,
        "position": "Директор",
        "photo": "/upload/resize_cache/main/c1c/100_100_2/ivanov.jpg",
        "url": ""
    },
    {
        "id": "12",
        "name": "Мария Петрова",
        "sub": true,
        "sup": false,
        "position": "Менеджер по продажам",
        "photo": "",
        "url": ""
    }
]

Пользователь подтвердил пустой выбор:

[]

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

Название
тип

Описание

id
string

Идентификатор сотрудника. Приходит строкой — приводите значение к числу, если передаете его в методы REST API

name
string

Имя сотрудника, отформатированное по настройкам Битрикс24

sub
boolean

true, если сотрудник работает в подразделении, которое подчинено текущему пользователю

sup
boolean

true, если сотрудник руководит подразделением текущего пользователя или любым вышестоящим подразделением

position
string

Должность сотрудника. Если должность не заполнена, приходит пустая строка или null — проверяйте значение на истинность

photo
string

Путь к уменьшенной копии аватара сотрудника относительно адреса Битрикс24, а не адреса приложения. Чтобы получить рабочую ссылку, соберите ее из https://, домена из BX24.getDomain и этого пути. Если фотографии нет, приходит пустая строка

url
string

Ссылка на профиль сотрудника. В диалоге приложения всегда приходит пустой строкой

Идентификатор из поля id подставляют в методы Битрикс24, где нужен USER_ID. Остальные поля диалог отдает для вывода в интерфейсе приложения — актуальные данные о сотруднике возвращает user.get.

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

Кодов ошибок диалог не возвращает. Случаи, когда результата нет, разобраны в блоке Обработка ответа.

Единственная ошибка возникает до вызова диалога. Если страница открыта вне фрейма Битрикс24, исключение с текстом Unable to initialize Bitrix24 JS library! возникает при загрузке скрипта библиотеки, а не при вызове метода — перехватывать его нужно на подключении.

Продолжите изучение