Мастер установки приложения

Многошаговый процесс установки, который создаёт пользовательские поля, регистрирует placement-ы, финализирует установку и празднует конфетти.
Нужные 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.