Нужные scope зависят от того, что делает мастер — как минимум
crm, user_brief, userfieldconfig, placement.Приложение Bitrix24 находится в состоянии «установки» между моментом, когда пользователь принимает диалог установки, и моментом, когда приложение вызывает installFinish(). В этом окне вы можете создать пользовательские поля, зарегистрировать placement-ы, засеять опции приложения — всё, что нужно приложению до приветствия пользователя. Этот рецепт показывает структуру такого процесса.
Используемые компоненты
B24Button— действия начать / повторить / завершить.B24Progress— визуальный прогресс-бар.ProseH1/ProseP— заголовок и текст статуса.ProsePre— отладочный / лог-вывод.useConfetti— финальная анимация.
Процесс
import { initializeB24Frame, type B24Frame } from '@bitrix24/b24jssdk'
let $b24: B24Frame
async function provision(): Promise<void> {
// Оборачиваем связанные шаги в батч, чтобы они шли одним round-trip
await $b24.actions.v2.batch.make({
calls: {
addUserField: {
method: 'userfieldconfig.add',
params: {
moduleId: 'crm',
field: { ENTITY_ID: 'CRM_DEAL', FIELD_NAME: 'UF_CRM_DEAL_DEMO', USER_TYPE_ID: 'string' }
}
},
bindPlacement: {
method: 'placement.bind',
params: { PLACEMENT: 'CRM_DEAL_LIST_MENU', HANDLER: '/embedded/menu' }
}
},
options: {
isHaltOnError: true,
requestId: 'install:provision'
}
})
}
async function run() {
$b24 = await initializeB24Frame()
if (!$b24.isInstallMode) {
// Уже установлено — рендерим обычный UI
return
}
await provision()
await $b24.installFinish()
// празднуем через useConfetti() ...
}
run().catch(console.error)
installFinish() выбрасывает Error('Application was previously installed. You cannot call installFinish'), когда приложение больше не в режиме установки — защищайтесь проверкой isInstallMode.
Полный исходник
Полный мастер с UI прогресса, повтором и конфетти см. в bitrix24/b24sdk-examples.