DialogManager доступен через $b24.dialog на экземпляре B24Frame и доступен только когда ваше приложение отрисовано внутри iframe Bitrix24 (он использует postMessage для общения с родительским окном).
Он повторяет legacy-хелперы BX24.selectUser, BX24.selectUsers, BX24.selectAccess и BX24.selectCRM, но возвращает строго типизированные Promise вместо приёма callback-ов.
Методы
selectUser
async selectUser(): Promise<null|SelectedUser>
Отображает стандартный диалог выбора одного сотрудника компании.
Promise разрешается объектом SelectedUser или null, если пользователь закрыл диалог, не сделав выбор.
// ... /////
$b24 = await initializeB24Frame()
// ... /////
const makeSelectUser = async() => {
const selectedUser = await $b24.dialog.selectUser()
if (!selectedUser) {
return
}
$logger.info(selectedUser)
}
selectUsers
async selectUsers(): Promise<SelectedUser[]>
Отображает стандартный диалог выбора нескольких сотрудников компании.
Promise разрешается массивом объектов SelectedUser. Массив пуст, если пользователь подтвердил диалог, никого не выбрав.
import { SelectedUser } from '@bitrix24/b24jssdk'
// ... /////
$b24 = await initializeB24Frame()
// ... /////
const makeSelectUsers = async() => {
const selectedUsers = await $b24.dialog.selectUsers()
const list = selectedUsers.map((row: SelectedUser): string => {
return [`[id: ${row.id}]`, row.name].join(' ')
})
$logger.info(selectedUsers, list)
}
selectAccess
async selectAccess(blockedAccessPermissions?: string[]): Promise<SelectedAccess[]>
Отображает стандартный диалог выбора прав доступа (отделы, группы, отдельные пользователи и предопределённые коды прав, такие как AU или CR).
Promise разрешается массивом записей SelectedAccess.
// ... /////
$b24 = await initializeB24Frame()
// ... /////
const makeSelectAccess = async() => {
const selected = await $b24.dialog.selectAccess(['AU'])
$logger.info(
selected.map(row => `${row.id} → ${row.name}`)
)
}
selectCRM
async selectCRM(params?: SelectCRMParams): Promise<SelectedCRM>
Отображает стандартный диалог выбора CRM-сущностей (лиды, контакты, компании, сделки, предложения).
Promise разрешается объектом SelectedCRM, свойства которого (lead, contact, company, deal, quote) — настоящие JavaScript-массивы SelectedCRMEntity. Корзины для типов сущностей, которые пользователь не выбрал (или не запрашивал), остаются undefined, а не пустым массивом.
selectCRM всегда возвращает настоящие массивы. Более ранние версии передавали payload родительского окна как есть, поэтому каждая корзина фактически была Record<string, SelectedCRMEntity> (например, { 0: {...}, 1: {...} }) — вызов .length или .map() на ней возвращал undefined. Код, написанный по документированным типам, продолжает работать; единственное поведенческое различие в том, что теперь runtime-форма совпадает с типами.// ... /////
$b24 = await initializeB24Frame()
// ... /////
const makeSelectCRM = async() => {
const selected = await $b24.dialog.selectCRM({
entityType: ['contact', 'company'],
multiple: true,
value: {
contact: [42],
company: [7]
}
})
selected.contact?.forEach((row) => {
$logger.info(`[${row.id}] ${row.title} — ${row.url}`)
})
selected.company?.forEach((row) => {
$logger.info(`[${row.id}] ${row.title}`)
})
}
multiple: false) всё равно разрешается той же формой SelectedCRM — корзины просто содержат не более одного элемента. Чтобы получить этот элемент, используйте selected.contact?.[0].Типы данных
SelectedUser
Представляет одного сотрудника компании, выбранного через selectUser / selectUsers. Флаги sub и sup описывают иерархические отношения с текущим пользователем.
SelectedAccess
Представляет одну запись, возвращаемую selectAccess.
Поле id использует грамматику кодов прав Bitrix24:
SelectCRMParamsEntityType
type SelectCRMParamsEntityType = 'lead' | 'contact' | 'company' | 'deal' | 'quote'
Набор видов CRM-сущностей, которые понимает selectCRM. Передаётся как params.entityType и используется в качестве ключей SelectCRMParamsValue и SelectedCRM.
SelectCRMParamsValue
Карта идентификаторов сущностей для предварительного выбора при multiple: true. Читаются только запрошенные типы сущностей; лишние ключи игнорируются.
SelectedCRMEntity
Представляет одну строку внутри корзины SelectedCRM.
SelectedCRM
Результат selectCRM. Каждое свойство — это либо массив SelectedCRMEntity, уточнённый литеральным шаблоном id, либо undefined, если пользователь не выбрал ничего этого типа.
Авторизация
Предназначен для управления аутентификацией в приложениях Bitrix24. Обрабатывает данные аутентификации, полученные от родительского окна, и предоставляет методы для их обновления и получения.
Опции
Используется для управления настройками приложения и пользователя в приложении Bitrix24. Позволяет инициализировать данные, получать и устанавливать опции через сообщения родительскому окну.