Показать диалог одиночного выбора пользователя BX24.selectUser
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
BX24.selectUser(callback: callable): void;
BX24.selectUser(title: string, callback: callable): void;
Метод BX24.selectUser показывает стандартный диалог одиночного выбора пользователя. Диалог выводит только действующих сотрудников компании, которые состоят хотя бы в одном подразделении. Пользователей экстранета, уволенных сотрудников, приглашенных с неактивированным аккаунтом и служебных пользователей — чат-ботов, почтовых и коннекторных — в нем нет.
Диалог рисует сам Битрикс24 поверх фрейма приложения, поэтому приложению не нужно получать список сотрудников. Оргструктуру диалог показывает целиком, без ограничения по правам текущего пользователя.
Состав диалога зависит от того, кто открыл приложение. Если это пользователь экстранета, вкладки с оргструктурой у него нет, а список сотрудников ограничен его рабочими группами.
Собственный scope диалогу не нужен: диалог открывает интерфейс Битрикс24, а не обращается к REST API.
Вызвать метод можно только из приложения, встроенного во фрейм Битрикс24, где подключена библиотека BX24.js.
Вызывайте метод внутри обработчика BX24.init. Сам диалог библиотека до инициализации не откладывает, но функции, которые обычно вызывают из callback, до нее не работают — например, BX24.userOption.set.
Отметить сотрудника заранее или сузить список сотрудников в диалоге нельзя.
Диалог одиночного выбора создается один раз и переиспользуется. При повторном вызове открывается то же окно: в нем отмечен прошлый выбор, а в строке поиска стоит имя выбранного сотрудника. Окно живет на странице портала, поэтому перезагрузка фрейма приложения его не сбрасывает. В приложение выбор не переносится — храните его сами.
Чтобы выбрать нескольких сотрудников, используйте BX24.selectUsers: он показывает тот же диалог с множественным выбором и отдает массив объектов вместо одного объекта.
Параметры метода
Обязательные параметры отмечены *
|
Название |
Описание |
|
title |
Заголовок диалога в форме вызова с двумя параметрами. Библиотека передает значение в Битрикс24, но диалог его не использует: окно открывается без заголовка. На диалог параметр не влияет, передавать его не нужно |
|
callback* |
Функция обратного вызова. Получает один параметр — объект с данными выбранного сотрудника (подробное описание). Если функцию не передать, диалог откроется и закроется по клику, но результат выбора никуда не придет: ошибки при этом не будет |
Примеры кода
Как использовать примеры в документации
Показать диалог и вывести выбранного сотрудника:
BX24.init(() => {
BX24.selectUser((user) => {
console.log(user.id, user.name);
});
});
Сохранить выбранного сотрудника в настройках пользователя, чтобы не показывать диалог при каждом открытии приложения:
BX24.init(() => {
BX24.selectUser((user) => {
BX24.userOption.set('assignee', user.id);
});
});
Получить карточку выбранного сотрудника методом user.get через BX24.callMethod и собрать ссылку на аватар. Методу нужен один из скоупов user, user_brief или user_basic, но в user_brief поле EMAIL не приходит:
BX24.init(() => {
BX24.selectUser((user) => {
const avatar = user.photo
? 'https://' + BX24.getDomain() + user.photo
: '';
BX24.callMethod('user.get', { ID: Number(user.id) }, (result) => {
if (result.error())
{
console.log(result.error());
return;
}
const employee = result.data()[0];
if (!employee)
{
return;
}
console.log(employee.EMAIL, employee.WORK_POSITION, avatar);
});
});
});
Обработка ответа
Диалог не возвращает данные напрямую: результат выбора приходит в функцию callback объектом. Сам метод возвращает void, поэтому дождаться выбора через await нельзя — работайте с результатом внутри callback.
Функция callback срабатывает по клику на сотрудника, отдельной кнопки подтверждения у диалога нет. Закрыть диалог, ничего не выбрав, можно кликом вне окна — крестика у него нет, и клавиша Esc его не закрывает. В этом случае функция не вызывается: пустого результата у одиночного диалога не бывает.
{
"id": "12",
"name": "Мария Петрова",
"sub": true,
"sup": false,
"position": "Менеджер по продажам",
"photo": "/upload/resize_cache/main/c1c/100_100_2/petrova.jpg",
"url": ""
}
Сотрудник без должности и фотографии:
{
"id": "7",
"name": "Иван Иванов",
"sub": false,
"sup": false,
"position": null,
"photo": "",
"url": ""
}
Возвращаемые данные
|
Название |
Описание |
|
id |
Идентификатор сотрудника. Приходит строкой — приводите значение к числу для методов Битрикс24, где нужен |
|
name |
Имя сотрудника, отформатированное по настройкам Битрикс24 |
|
sub |
|
|
sup |
|
|
position |
Должность сотрудника. Если должность не заполнена, приходит пустая строка или |
|
photo |
Путь к уменьшенной копии аватара сотрудника относительно адреса Битрикс24, а не адреса приложения. Чтобы получить рабочую ссылку, соберите ее из |
|
url |
Ссылка на профиль сотрудника. В диалоге приложения всегда приходит пустой строкой |
Кроме id, поля диалог отдает для вывода в интерфейсе приложения — актуальные данные о сотруднике возвращает user.get.
Обработка ошибок
Кодов ошибок диалог не возвращает. Случай, когда результата нет, разобран в блоке Обработка ответа.
Единственная ошибка появляется до вызова диалога. Библиотека берет адрес портала и идентификатор сессии приложения из window.name, который проставляет Битрикс24. Если страница открыта не во фрейме приложения Битрикс24, при загрузке скрипта библиотеки возникает исключение с текстом Unable to initialize Bitrix24 JS library!, а объект BX24 обнуляется. Перехватывайте исключение там, где подключаете библиотеку: продолжить работу с ней после этого нельзя.
Продолжите изучение
- Системные диалоги: обзор методов
- Показать диалог множественного выбора пользователей BX24.selectUsers
- Показать диалог выбора прав доступа BX24.selectAccess
- Вызвать диалог выбора объектов CRM BX24.selectCRM
- Вызвать метод REST-сервиса с указанными параметрами BX24.callMethod
- Получить список пользователей по фильтру user.get
- Установить настройки для пользователя BX24.userOption.set