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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка віджетів для Бітрікс24
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка віджетів для Бітрікс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.