Разработка встраиваемых приложений Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка встраиваемых приложений Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1169
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка встраиваемых приложений Битрикс24

Встраиваемые приложения — это не просто «окно в iframe». Когда менеджер работает в карточке сделки и видит вкладку с историей отгрузок из вашей WMS, с возможностью прямо там создать новый заказ — это результат правильно построенного встраиваемого приложения. Разница с обычным виджетом в том, что встраиваемое приложение имеет двустороннее взаимодействие с интерфейсом Битрикс24 и может управлять его состоянием.

Что такое встраиваемое приложение в терминологии Bitrix24

В документации Bitrix24 встраиваемые приложения (Embedded Apps) — это приложения с типом IFRAME, которые регистрируют плейсменты и работают внутри интерфейса портала. В отличие от внешних (серверных) приложений, они имеют прямой доступ к JS SDK BX24 и могут:

  • читать и изменять поля открытой карточки CRM в реальном времени без перезагрузки
  • вызывать диалоги, слайдеры и уведомления Битрикс24 (BX24.openPath, BX24.showMessagePopup)
  • подписываться на события интерфейса через BX24.placement.call('getInterface', ...)

Жизненный цикл и авторизация

При открытии вкладки с приложением Битрикс24 формирует iframe-запрос к вашему handler URL с параметрами:

GET https://your-app.com/handler?
    DOMAIN=company.bitrix24.ru&
    PROTOCOL=1&
    AUTH_ID=abc123&
    AUTH_EXPIRES=3600&
    REFRESH_ID=xyz789&
    member_id=a1b2c3&
    PLACEMENT=CRM_DEAL_DETAIL_TAB&
    PLACEMENT_OPTIONS={"ID":"42","SECTION":""}

AUTH_ID живёт 1 час. Для долгоживущих сессий (пользователь оставил вкладку открытой) нужен refresh:

BX24.init(() => {
    // Автоматически обновляет токен если он истёк
    BX24.getAuth((auth) => {
        // auth.access_token — актуальный токен
        fetch('/api/data', {
            headers: { 'X-Bitrix-Auth': auth.access_token }
        });
    });
});

На вашем сервере проверяйте токен через:

GET https://company.bitrix24.ru/rest/profile?auth=ACCESS_TOKEN

Взаимодействие с CRM-карточкой в реальном времени

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

Подписка на изменение поля в карточке:

BX24.placement.call('bindEvent', {
    event: 'onCrmBindEntityUpdated'
}, (eventData) => {
    // Вызывается когда пользователь сохраняет карточку
    const entityId = eventData.ENTITY_ID;
    refreshWidgetData(entityId);
});

Программное изменение поля карточки (без сохранения — только визуально):

BX24.placement.call('setFieldValue', {
    FIELD: 'UF_CRM_CUSTOM_STATUS',
    VALUE: 'shipped'
}, () => {
    console.log('Поле обновлено в интерфейсе');
});

Полный список событий и методов placement зависит от типа карточки (CRM_DEAL, CRM_LEAD, CRM_CONTACT, CRM_COMPANY) — у каждой своя документация.

Структура проекта встраиваемого приложения

Минимальная структура:

/app
  /public
    index.html        # Точка входа (handler URL)
    app.js            # Клиентский код с BX24 SDK
  /src
    /api
      bitrix.js       # Обёртка над BX24.callMethod
      external.js     # Запросы к внешнему API
    /components
      DealTab.jsx     # React/Vue/Vanilla — что угодно
  server.js           # Express/Fastify для OAuth callback и API proxy

Почему нужен серверный компонент даже для "клиентского" приложения: OAuth callback (/oauth/callback) должен обрабатываться на сервере, client_secret нельзя выносить в браузер, проксирование запросов к внешним API избегает CORS-проблем.

Работа с событиями через BX24.placement

Разные плейсменты предоставляют разный набор методов. Для CRM_DEAL_DETAIL_TAB:

// Получить интерфейс текущего плейсмента
BX24.placement.call('getInterface', {}, (interfaceData) => {
    /*
    interfaceData содержит:
    {
        ID: "42",           // ID сделки
        ENTITY_TYPE: "CRM_TYPE_DEAL",
        FIELDS: { ... },   // Текущие значения полей
        BUTTONS: [ ... ]   // Доступные кнопки
    }
    */
});

Публикация и установка

Встраиваемые приложения могут быть:

  1. Локальными — доступны только на одном портале, устанавливаются через настройки разработчика
  2. Тиражными — публикуются в Битрикс24 Маркете, проходят модерацию

Для локальной установки достаточно зарегистрировать приложение в /devops/ и указать handler URL. Для тиражного — нужен SSL, корректный manifest.json и прохождение ревью Bitrix.

Тестирование

Самая частая проблема при разработке — отладка внутри iframe. Браузерные DevTools не открываются в контексте iframe Битрикс24 напрямую. Решения:

  • Открывайте handler URL напрямую в браузере с mock-параметрами для отладки UI
  • Используйте ngrok или localtunnel для локального сервера с HTTPS (Битрикс24 требует HTTPS даже на dev)
  • Логируйте через BX24.console.log() — сообщения появятся в консоли родительского окна

Сроки разработки

Масштаб Что включает Срок
MVP 1 плейсмент, чтение данных CRM, без внешних интеграций 3–5 дней
Стандарт 2–3 плейсмента, запись в CRM, простая внешняя интеграция 1–2 недели
Продвинутый 5+ плейсментов, двустороння синхронизация с внешней системой, OAuth 3–6 недель
Тиражное приложение для Маркета Полный цикл включая модерацию и документацию 2–3 месяца

Критичный момент: перед стартом разработки согласуйте с заказчиком список плейсментов — добавление нового плейсмента после публикации тиражного приложения требует повторного прохождения модерации.