Розробка вбудовуваних програм на Vue.js для Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка вбудовуваних програм на Vue.js для Бітрікс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

Розробка вбудованих застосунків на Vue.js для Бітрікс24

Вбудовані застосунки у Бітрікс24 — це окремі frontend-модулі, які завантажуються всередині інтерфейсу порталу через iframe або BX24 JS SDK. Стандартний шлях — PHP-сторінка з window.BX24.init() та jQuery-кодом. Коли логіка застосунку стає нетривіальною: кілька екранів, стан, реактивні оновлення — jQuery перетворюється на непідтримувану локшину. Vue.js вирішує цю проблему архітектурно.

Як вбудовуються застосунки у Бітрікс24

Бітрікс24 надає два механізми розміщення:

  • iframe-застосунок — завантажується за зовнішнім URL у вікні порталу. Обмінюється даними з Бітрікс24 через JS-бібліотеку window.BX24.
  • Вбудований JS-застосунок — розміщується на тому самому домені, реєструється через \Bitrix\Rest\AppTable, використовує серверний REST API напряму.

Для Vue-застосунків стандартний вибір — iframe з окремим хостингом або розміщення у /local/apps/. Серверна частина може бути написана на Laravel, Node.js або самому Бітріксі.

Ініціалізація Vue всередині Бітрікс24

Підключення BX24 SDK та старт Vue-застосунку:

<!-- index.html -->
<script src="//{{portal}}.bitrix24.ru/bitrix/js/rest/bx24/bx24.js"></script>
<div id="app"></div>
<script type="module" src="/assets/app.js"></script>
// main.js
import { createApp } from 'vue'
import App from './App.vue'

window.BX24.init(() => {
  const app = createApp(App)
  app.provide('bx24', window.BX24)
  app.mount('#app')
})

Передача BX24 через provide/inject дозволяє використовувати його в будь-якому компоненті без глобальних змінних.

Робота з REST API Бітрікс24 із Vue

Для REST-викликів використовується BX24.callMethod або BX24.callBatch. Огортаємо у проміси:

// composables/useBx24.js
import { inject } from 'vue'

export function useBx24() {
  const bx24 = inject('bx24')

  function callMethod(method, params = {}) {
    return new Promise((resolve, reject) => {
      bx24.callMethod(method, params, (result) => {
        if (result.error()) reject(result.error())
        else resolve(result.data())
      })
    })
  }

  async function callBatch(calls) {
    return new Promise((resolve, reject) => {
      bx24.callBatch(calls, (results) => {
        const errors = Object.values(results).filter(r => r.error())
        if (errors.length) reject(errors[0].error())
        else resolve(Object.fromEntries(
          Object.entries(results).map(([k, v]) => [k, v.data()])
        ))
      })
    })
  }

  return { callMethod, callBatch }
}

Типовий компонент списку угод:

<script setup>
import { ref, onMounted } from 'vue'
import { useBx24 } from '@/composables/useBx24'

const { callMethod } = useBx24()
const deals = ref([])
const loading = ref(true)

onMounted(async () => {
  deals.value = await callMethod('crm.deal.list', {
    select: ['ID', 'TITLE', 'STAGE_ID', 'OPPORTUNITY'],
    filter: { STAGE_ID: 'NEW' },
    order: { DATE_CREATE: 'DESC' }
  })
  loading.value = false
})
</script>

Керування розміром iframe

Бітрікс24 не керує висотою iframe автоматично. Застосунок повинен сам повідомляти про свій розмір:

// App.vue
import { onMounted, onUpdated } from 'vue'

const bx24 = inject('bx24')

function fitWindow() {
  bx24.fitWindow()
}

onMounted(fitWindow)
onUpdated(fitWindow)

Для динамічних застосунків зі змінною висотою — ResizeObserver на кореневий елемент із викликом bx24.resizeWindow(width, height).

Авторизація та права доступу

Токен доступу передається автоматично через BX24 SDK. Для серверних запитів використовується bx24.getAuth():

const auth = bx24.getAuth()
// { access_token, expires_in, scope, domain, ... }

await fetch('/api/my-endpoint', {
  headers: { Authorization: `Bearer ${auth.access_token}` }
})

Перевірка прав користувача — crm.contact.access.has та аналогічні методи залежно від сутності.

Збірка та деплой

Vite — оптимальний вибір для збірки:

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  base: '/local/apps/my-app/',
  build: {
    outDir: 'dist',
    assetsDir: 'assets',
  }
})

Зібраний dist/ розміщується на сервері. У налаштуваннях застосунку Бітрікс24 вказується URL точки входу. Для локальної розробки використовується ngrok або Vite dev server із HTTPS — Бітрікс24 вимагає HTTPS для iframe-застосунків.

Типові сценарії застосування

Дашборд по угодах — агрегація даних із CRM, візуалізація воронки, фільтри по відповідальних і періодах. Стандартних звітів Бітрікс24 для нестандартних зрізів недостатньо.

Кастомна форма створення заявки — багатокрокова форма з валідацією, залежними полями, завантаженням файлів. Стандартна картка CRM не підтримує складну умовну логіку відображення полів.

Інтеграційний конектор — застосунок отримує дані із зовнішньої системи (1С, ERP, маркетплейс) і відображає їх у контексті Бітрікс24 з можливістю синхронізації.

Планувальник завдань — кастомний UI для керування завданнями з drag-and-drop, kanban-дошкою або timeline-видом поверх стандартного API завдань.

Терміни виконання

Простий застосунок (один екран, CRUD по одній сутності) — 2–3 робочі дні. Застосунок із кількома екранами, авторизацією, серверною частиною та деплоєм — 1–2 тижні залежно від складності бізнес-логіки.