Разработка виджетов для Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка виджетов для Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1165
  • 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
    563
  • 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

Классическая ситуация: CRM уже используется, все сделки ведут менеджеры, но нужно добавить на карточку сделки блок с данными из внешней системы — например, остатки на складе из ERP или статус доставки из транспортной компании. Штатными средствами это не реализовать, нужен виджет через REST API и механизм встраивания UI Extensions.

Виджеты в Битрикс24 — это отдельный тип приложений, которые рендерятся внутри интерфейса портала через iframe или JS SDK. С 2022 года Bitrix развивает концепцию UI Extensions как замену классическим iframe-виджетам. Разбираемся, что когда применять и как это делается на практике.

Типы виджетов и места встраивания

Битрикс24 поддерживает несколько механизмов встраивания:

  • Placement API (BX24.placement.call) — классический способ: приложение регистрирует placement, Битрикс24 отображает его в нужном месте интерфейса
  • UI Extensions — набор готовых компонентов (Button, Dialog, Loader, Alert), доступных через @bitrix24/b24jssdk. Работают внутри iframe, но с доступом к шине событий портала
  • Slider — открытие произвольного URL в боковой панели через BX24.openApplication()

Актуальные плейсменты регистрируются при установке приложения через метод app.option.set и хранятся в таблице b_app_option. Список доступных мест встраивания:

Placement Где отображается
CRM_DEAL_DETAIL_TAB Вкладка на карточке сделки
CRM_LEAD_DETAIL_TAB Вкладка на карточке лида
CRM_CONTACT_DETAIL_ACTIVITY Активность в таймлайне контакта
TASK_VIEW_TAB Вкладка в задаче
CALL_CARD Карточка звонка
TELEPHONY_CALL_BEFORE_ANSWER До ответа на звонок
TOP_MENU_ITEM Пункт верхнего меню

Архитектура iframe-виджета

Типичный виджет состоит из двух частей: обработчика на сервере (endpoint, который вернёт HTML страницы виджета) и клиентского кода внутри iframe.

Инициализация в клиентском коде:

BX24.init(() => {
    const placement = BX24.placement.info();
    // placement.options содержит контекст: id сделки, id пользователя и т.д.
    const dealId = placement.options.ID;

    BX24.callMethod('crm.deal.get', { id: dealId }, (result) => {
        if (result.error()) {
            console.error(result.error());
            return;
        }
        renderWidget(result.data());
    });
});

Высота iframe — частая проблема. Битрикс24 не делает iframe резиновым автоматически. После рендера контента нужно явно вызвать:

BX24.fitWindow(() => {
    // callback после изменения высоты
});

Если этого не сделать — виджет обрежется или появится внутренний скроллбар.

UI Extensions: современный подход

Начиная с версии портала 2024+, рекомендуется использовать @bitrix24/b24jssdk. Он даёт типизированный доступ к REST API прямо из iframe:

import { initializeB24Frame, B24Frame } from '@bitrix24/b24jssdk';

const $b24 = await initializeB24Frame();
const profile = await $b24.fetchProfile();
const result = await $b24.callMethod('crm.deal.list', {
    filter: { ASSIGNED_BY_ID: profile.id },
    select: ['ID', 'TITLE', 'STAGE_ID']
});

SDK берёт на себя авторизацию (OAuth токен передаётся автоматически через postMessage), не нужно хранить client_secret на клиенте.

Регистрация плейсмента и манифест приложения

Приложение регистрирует плейсменты при установке через хук OnAppInstall. Пример в манифесте:

{
  "placements": [
    {
      "placement": "CRM_DEAL_DETAIL_TAB",
      "handler": "https://myapp.example.com/widget/deal-tab",
      "title": "Данные ERP",
      "description": "Остатки и резервы по позициям сделки"
    }
  ]
}

Либо программно через REST:

POST /rest/placement.bind
{
  "PLACEMENT": "CRM_DEAL_DETAIL_TAB",
  "HANDLER": "https://myapp.example.com/widget/deal-tab",
  "TITLE": "Склад"
}

Авторизация и безопасность

Все запросы от iframe к серверу должны передавать AUTH_ID (короткоживущий токен, 1 час) или использовать REFRESH_TOKEN для его обновления. Никогда не храните client_secret в клиентском коде — только на сервере.

Валидируйте входящий event из postMessage:

window.addEventListener('message', (event) => {
    if (event.origin !== 'https://your-portal.bitrix24.ru') return;
    // обработка
});

Типичные сложности

CSP (Content Security Policy) Битрикс24 ограничивает frame-ancestors. Ваш домен приложения должен быть в белом списке, что настраивается автоматически при публикации в Маркете или регистрации локального приложения.

Медленная инициализация BX24.init() — если виджет грузится дольше 3 секунд, пользователи переключаются на другую вкладку. Оптимизация: загружайте bx24.js через CDN, делайте скелетон-лоадер до получения данных.

Кросс-доменные cookies — для сессионной авторизации своего бэкенда используйте SameSite=None; Secure, иначе браузер заблокирует куки внутри iframe.

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

Тип виджета Объём работ Срок
Простой информационный виджет (чтение данных CRM) S 1–2 дня
Интерактивный виджет с записью в CRM M 3–5 дней
Виджет с интеграцией внешней системы L 1–2 недели
Комплект виджетов (5+ плейсментов) XL 2–4 недели

Основное время уходит не на сам виджет, а на настройку OAuth-авторизации, обработку edge-кейсов (истёкший токен, портал в другом датацентре) и тестирование в нескольких браузерах — Битрикс24 поддерживает Chrome, Firefox, Safari и мобильные приложения с разным поведением iframe.