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

Разработка виджетов для Битрикс24 Классическая ситуация: CRM уже используется, все сделки ведут менеджеры, но нужно добавить на карточку сделки блок с данными из внешней системы — например, остатки на складе из ERP или статус доставки из транспортной компании. Штатными средствами это не реализова
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка виджетов для Битрикс24 под ключ
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • 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
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1161

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

Классическая ситуация: CRM уже используется, все сделки ведут менеджеры, но нужно добавить на карточку сделки блок с данными из внешней системы — например, остатки на складе из ERP или статус доставки из транспортной компании. Штатными средствами это не реализовать, нужен виджет через REST API и механизм встраивания UI Extensions. Мы в нашей компании регулярно решаем такие задачи: интеграция ERP, синхронизация статусов доставки, отображение фискальных чеков из ОФД прямо в карточке лида. За годы работы мы выработали чёткий подход к разработке виджетов: от аудита бизнес-процессов до выкатки в маркетплейс. В этой статье делимся практическими наработками.

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

Как выбрать между iframe и UI Extensions?

Критерий iframe-виджет UI Extensions
Совместимость Все версии Битрикс24 Портал свежих версий (с поддержкой @bitrix24/b24jssdk)
Производительность Загрузка отдельной страницы Компоненты грузятся быстрее, шина событий прямая
Кросс-доменные ограничения Требуется CSP и SameSite Авторизация через postMessage
Сложность разработки Ниже, проще дебаг Выше, нужен TypeScript

Какие типы виджетов и места встраивания существуют?

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

  • Placement API (BX24.placement.call) — классический способ: приложение регистрирует placement, Битрикс24 отображает его в нужном месте интерфейса.
  • UI Extensions — набор готовых компонентов (Button, Dialog, Loader, Alert), доступных через @bitrix24/b24jssdk.
  • 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 Пункт верхнего меню

Каждый placement передаёт в виджет контекстную информацию: ID сущности, тип, права доступа. Подробнее о плейсментах читайте в официальной документации.

Как устроен iframe-виджет?

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

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

BX24.init(() => { const placement = BX24.placement.info(); 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 быстрее?

В последних версиях портала рекомендуется использовать @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 на клиенте. UI Extensions запускается на 30% быстрее, чем iframe-виджет, за счёт прямой шины событий.

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

Приложение регистрирует плейсменты при установке через хук 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": "Склад" } 

Почему важна безопасность OAuth?

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

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

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

OAuth — ключевой элемент безопасности. Опыт показывает, что большинство ошибок при разработке виджетов связаны с неправильной обработкой токенов. Подробнее об OAuth читайте на Wikipedia.

Типичные ошибки и их решение

  • Content Security Policy (CSP) Битрикс24 ограничивает frame-ancestors. Ваш домен приложения должен быть в белом списке, что настраивается автоматически при публикации в Маркете или регистрации локального приложения.
  • Медленная инициализация BX24.init() — если виджет грузится дольше 3 секунд, пользователи переключаются на другую вкладку. Оптимизация: загружайте bx24.js через CDN, делайте скелетон-лоадер до получения данных.
  • Кросс-доменные cookies — для сессионной авторизации своего бэкенда используйте SameSite=None; Secure, иначе браузер заблокирует куки внутри iframe.

Если вы столкнулись с любой из этих проблем — напишите нам. Наши сертифицированные специалисты помогут диагностировать и устранить неисправность. Свяжитесь с нами для бесплатной оценки проекта.

Что входит в работу

  • Аудит текущей CRM и интеграционных сценариев
  • Проектирование архитектуры виджета с учётом безопасности
  • Реализация и тестирование в нескольких браузерах (Chrome, Firefox, Safari, мобильные приложения)
  • Интеграция с внешними системами (ERP, ОФД, транспортные компании)
  • Документация по установке и сопровождению
  • Обучение администраторов портала

Мы даём гарантию на все выполненные работы. Поэтому при разработке мы используем только проверенные решения и многолетний опыт.

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

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

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

Закажите разработку виджета уже сегодня. Оценим ваш проект бесплатно. Свяжитесь с нами, чтобы обсудить детали.