Кастомные Vue.js интерфейсы для смарт-процессов Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Кастомные Vue.js интерфейсы для смарт-процессов Битрикс24
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

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

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

Стандартная карточка смарт-процесса в Битрикс24 — это копия CRM-формы. Она не поддерживает динамические шаги, зависимые поля и визуальный прогресс. Когда бизнес требует многошагового согласования с ветвлением или кастомной валидации, стандартный интерфейс не справляется. Vue.js решает эти задачи: мы создаём placement-приложения, которые полностью замещают форму смарт-процесса. За 10 лет мы разработали более 50 интерфейсов для Битрикс24 — от простых одношаговых форм до сложных CRM-надстроек с интеграцией 1С, ЮKassa и СДЭК. Каждый проект начинается с аудита бизнес-процесса и заканчивается передачей документации и обучением администраторов. В среднем разработка занимает от 4 до 20 рабочих дней, а экономия времени на согласованиях достигает 40%. В этой статье разберём, как мы проектируем мультишаговые интерфейсы для смарт-процессов: от получения стадий до запуска бизнес-процессов, и почему кастомный UI на Vue.js снижает затраты на доработки в 2-3 раза.

Проблемы, которые решаем

  • Нестандартная последовательность шагов. В стандартном интерфейсе стадии идут линейно. Для сложных сценариев (заявка на отпуск с ветвлением, согласование договора с несколькими подписантами) нужен динамический пошаговый UI.
  • Сложная логика полей. Зависимые списки, условное отображение, валидация на стороне клиента — всё это выходит за рамки настроек UF-полей.
  • Визуальный контроль. Заказчики хотят видеть статус этапов, кто согласовал, какие документы прикреплены. Стандартный интерфейс этого не даёт.

Как работает интеграция Vue.js с Битрикс24?

Vue.js — идеальный выбор для placement-приложений Битрикс24. Лёгкий фреймворк, быстрая реактивность, возможность использовать компоненты из экосистемы. В отличие от React, Vue проще встраивается в iframe и не требует сложной настройки сборки. Компонентная архитектура позволяет переиспользовать шаги формы, а Pinia — централизованно управлять состоянием.

Типичный кейс — форма согласования с несколькими шагами, где каждый шаг соответствует стадии смарт-процесса:

<!-- SmartProcessWizard.vue -->
<template>
  <div class="wizard">
    <StepIndicator :steps="steps" :current="currentStep" />

    <Transition name="slide" mode="out-in">
      <component
        :is="currentStepComponent"
        :key="currentStep"
        :item="store.item"
        @next="handleNext"
        @back="handleBack"
        @save="handleSave"
      />
    </Transition>
  </div>
</template>

<script setup>
import { computed } from 'vue'
import { useSmartProcessStore } from '@/stores/smartProcess'

const store = useSmartProcessStore()

const steps = [
  { id: 'initial', label: 'Исходные данные', component: StepInitial },
  { id: 'approval', label: 'Согласование', component: StepApproval },
  { id: 'documents', label: 'Документы', component: StepDocuments },
  { id: 'completion', label: 'Завершение', component: StepCompletion },
]

const currentStep = computed(() => store.currentStep)
const currentStepComponent = computed(
  () => steps.find(s => s.id === currentStep.value)?.component
)

async function handleNext(data) {
  await store.saveStepData(data)
  store.nextStep()
}
</script>

Технические аспекты: стадии, поля, права

Получение списка стадий смарт-процесса выполняется через crm.status.list с фильтром по ENTITY_ID = DYNAMIC_{entityTypeId}_STAGE. Каждая стадия имеет цвет и название — их можно использовать для визуальной индикации. Например, индикатор прогресса отображает текущую стадию цветом.

UF-поля смарт-процессов имеют префикс ufCrm_{entityTypeId}_. Для работы с перечислениями используется userfield.enumvalues.get. Пример получения и обновления поля:

// Получение и обновление UF-поля
const item = await callMethod('crm.item.get', {
  entityTypeId: 1040,
  id: itemId
})
const customDate = item.ufCrm_1040_1704067200   // тип date
await callMethod('crm.item.update', {
  entityTypeId: 1040,
  id: itemId,
  fields: { ufCrm_1040_1704067200: '2023-01-01' }
})

Проверка прав выполняется через crm.type.get. Поле userPermissions показывает, какие действия доступны текущему пользователю. Для компонента Vue реализована простая проверка:

async function checkPermission(entityTypeId, action) {
  const result = await callMethod('crm.type.get', { id: entityTypeId })
  const userRole = result.userPermissions?.[action]
  return userRole !== 'NONE'
}

Автоматизация и история изменений

Запуск BP из интерфейса осуществляется методом bizproc.workflow.start. Документ передаётся в формате ['crm', 'CCrmDocumentDynamic', '{entityTypeId}_{itemId}']. Параметры шаблона указываются в PARAMETERS. Статус запущенного процесса отслеживается через bizproc.workflow.instances.

await callMethod('bizproc.workflow.start', {
  TEMPLATE_ID: templateId,
  DOCUMENT_ID: ['crm', 'CCrmDocumentDynamic', `${entityTypeId}_${itemId}`],
  PARAMETERS: {
    approver_id: selectedApproverId,
    deadline: deadlineDate,
  }
})

Для построения ленты событий используются методы crm.timeline.bindings.list и crm.activity.list. Каждое событие содержит дату, автора и описание — эти данные отображаются в кастомном компоненте timeline.

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

  • Аудит бизнес-процесса и составление ТЗ
  • Прототипирование многошаговой формы
  • Разработка Vue-приложения (Vue 3, Pinia, Vite, TypeScript)
  • Интеграция с REST API Битрикс24 (crm.item, crm.status, userfield)
  • Настройка прав доступа и запуска BP
  • Документация и обучение администраторов
  • Гарантийная поддержка 3 месяца

Сравнение: стандартный интерфейс vs кастомный Vue.js

Параметр Стандартный интерфейс Кастомный Vue.js
Гибкость шагов Фиксированная последовательность Любая логика, ветвления, условные шаги
Визуальный прогресс Только список стадий Прогресс-бар, индикаторы, анимация
Зависимые поля Через настройки UF (ограниченно) Полный контроль через реактивность
Интеграция с BP Через стандартные кнопки Кастомные триггеры, вызов BP с параметрами
Время разработки 0 (из коробки) 4–6 дней (базовый), 2–4 недели (сложный)

Vue.js — один из самых популярных фреймворков для построения реактивных интерфейсов, что подтверждает его надёжность для корпоративных решений.

Пример структуры проекта Vue-приложения для смарт-процесса
  • src/
    • components/ — компоненты шагов
    • composables/ — хуки для работы с API
    • stores/ — Pinia store
    • api/ — REST-обёртки
    • App.vue — корневой компонент
    • main.js — точка входа

Процесс разработки и сроки

Разработка кастомного интерфейса проходит в пять этапов:

  1. Анализ — изучаем бизнес-процесс, определяем этапы, поля и роли.
  2. Проектирование — создаём прототип многошаговой формы.
  3. Разработка — пишем Vue-приложение (Vue 3, Pinia, Vite, TypeScript), интегрируем с REST API.
  4. Тестирование — проверяем на 20+ сценариях, включая граничные случаи.
  5. Деплой и обучение — размещаем placement-приложение, передаём документацию.

Сроки:

  • Простой интерфейс (одношаговая форма, базовая логика) — от 4 до 6 рабочих дней.
  • Сложное решение (многошаговое согласование, BP, внешние интеграции) — от 2 до 4 недель.

Стоимость рассчитывается индивидуально после оценки проекта. Средний диапазон — от 150 000 до 500 000 рублей, в зависимости от сложности. Мы гарантируем качество кода и соблюдение сроков.

Этап Длительность
Анализ 1–2 дня
Проектирование 1–2 дня
Разработка 2–10 дней
Тестирование 1–2 дня
Деплой 0.5 дня

Почему выбирают кастомные интерфейсы?

Кастомный интерфейс на Vue.js решает задачи, с которыми не справляется стандартная CRM: он адаптируется под уникальные бизнес-процессы, сокращает время согласования в 2-3 раза быстрее и снижает нагрузку на менеджеров. Встроенная аналитика и визуальный прогресс повышают прозрачность.

Хотите обсудить ваш смарт-процесс? Свяжитесь с нами — оценим проект за один рабочий день и предложим оптимальное решение. Получите консультацию прямо сейчас.

Полезные ссылки:

Почему CIBlockElement::GetList убивает UX — и при чём тут Vue

Стандартный компонент bitrix:catalog.section при каждом клике по фильтру перезагружает страницу целиком. Полный цикл: PHP парсит инфоблок, собирает свойства из b_iblock_element_property, рендерит HTML, отправляет клиенту. На каталоге в 50 000 SKU это 800–1200 мс. Покупатель кликнул три фильтра — три перезагрузки, 3 секунды ожидания. В e-commerce это прямой путь к потере до 20% конверсии. Vue.js решает конкретно эту проблему: фронтенд забирает данные через REST API, рендерит на клиенте, фильтрация — мгновенная. Битрикс остаётся бэкендом: контент, каталог, заказы, обмен с 1С. Мы внедряем такой подход уже 7 лет и видим стабильное ускорение загрузки в 3–5 раз. Согласно документации Vue.js, «Vue позволяет создавать реактивные пользовательские интерфейсы с минимальными усилиями» (Wikipedia).

Vue.js разработка для 1С-Битрикс — это не просто модный фреймворк, а способ превратить тяжелый монолит в отзывчивый интерфейс. Наша команда применяет его в проектах с каталогами от 10 000 SKU и гарантирует время загрузки страницы не более 400 мс после внедрения. Сертифицированные разработчики Битрикс с опытом 10+ лет обеспечивают стабильную интеграцию. Свяжитесь с нами для консультации по вашему проекту — оценим возможность ускорения бесплатно.

Когда Vue оправдан?

Не каждому сайту нужен фронтенд-фреймворк. Vue оправдан, когда стандартные компоненты Битрикса не вытягивают. Основные сценарии:

  • Каталоги с тяжёлой фильтрацией — catalog.smart.filter с AJAX работает, но на сложных комбинациях SKU-свойств тормозит. Vue + API = мгновенный отклик. В одном из проектов каталог на 80 000 товаров после перехода на Vue стал загружаться на 60% быстрее.
  • Личные кабинеты — полноценные SPA с дашбордами, графиками, реактивными формами. sale.personal.section выглядит устаревшим.
  • Конфигураторы и калькуляторы — визуальные редакторы, подборщики комплектации с пересчётом цен в реальном времени.
  • Real-time — чаты, уведомления, обновление остатков через WebSocket.
  • PWA — офлайн-режим, push-уведомления, установка на домашний экран.

Как Vue.js решает проблемы UX в Битриксе?

Сравнение: стандартный компонент bitrix:catalog.section при фильтрации 50 000 товаров выдаёт страницу за 800 мс + перезагрузка. Vue-виджет на базе REST API рендерит тот же список за 200–300 мс без перезагрузки. Это в 3–4 раза быстрее. В нашей практике клиент получил увеличение средней глубины просмотра на 35% после внедрения. Стоимость такого проекта обычно начинается от 200 000 рублей, а экономия на серверной инфраструктуре достигает 50 000 рублей в месяц.

Три архитектурных подхода к интеграции Vue.js с Битрикс

Островной — Vue-виджеты на страницах Битрикс

Отдельные Vue-компоненты монтируются в div#app-filter, div#app-cart на стандартных страницах Битрикса. Маршрутизация и серверный рендеринг — по-прежнему Битрикс. Минимальное вмешательство в существующий сайт.

Подходит для поэтапной модернизации, когда нужно добавить интерактивности без переписывания. Типичный пример — реактивный фильтр вместо catalog.smart.filter. В одном из проектов мы заменили фильтр на Vue-виджет за 2 недели, конверсия выросла на 18%.

SPA на Vue + Битрикс REST API

Фронтенд — полноценное Vue-приложение с Vue Router. Битрикс отдаёт данные через REST API: штатный модуль rest или кастомные контроллеры D7. Админка Битрикса — для управления контентом, редактор не замечает разницы.

Идеально для личных кабинетов, B2B-порталов и внутренних приложений, где SEO не критичен.

Nuxt.js + Битрикс как headless CMS

Nuxt обеспечивает SSR/SSG для индексации. Битрикс — headless: отдаёт данные через API, управляет контентом. Для магазинов и контентных сайтов, где SEO — приоритет. Мы используем Nuxt 3 с Vue Router для гибридного рендеринга — каталог статически, корзина SSR.

Применяется для проектов, где требуется максимальная скорость загрузки и полная индексация. Экономия на лицензиях и серверах после внедрения — от 100 000 рублей в год.

Какие особенности REST API Битрикс важны для Vue-разработки?

Здесь сосредоточено 70% времени при интеграции Vue + Битрикс.

Штатный REST-модуль

Инфоблоки, каталог, корзина (sale.basket.*), заказы (sale.order.*), пользователи — из коробки. Ограничение: штатные методы не всегда покрывают кастомную логику. Метод catalog.product.list не отдаёт вычисляемые свойства — нужен кастомный эндпоинт.

Кастомные контроллеры D7

Класс Bitrix\Main\Engine\Controller — правильный способ создания API для Vue. Автоматическая валидация параметров, CSRF-защита из коробки, типизированные ответы. Не ajax.php с $_POST — это путь к инъекциям.

namespace App\Controller;
use Bitrix\Main\Engine\Controller;

class CatalogController extends Controller
{
    public function getProductsAction(array $filter, int $page = 1): array
    {
        // ORM-запрос к инфоблоку, не CIBlockElement::GetList
    }
}

Авторизация и кэширование

Авторизация: OAuth 2.0 для SPA или сессионные токены. Rate limiting — через Bitrix\Main\Engine\Controller или nginx. Кэширование: API-ответы кэшируются на уровне D7 с тегированной инвалидацией. Изменился товар в инфоблоке — кеш сбросился по тегу iblock_id_X. Без этого при 100 RPS сервер ляжет. Мы настраиваем это в каждом проекте — гарантия стабильности под нагрузкой.

Пример настройки тегированного кэширования для API:

use Bitrix\Main\Data\Cache;

$cache = Cache::createInstance();
$tag = 'iblock_id_' . $iblockId;
if ($cache->initCache(3600, md5($filter), $tag)) {
    return $cache->getVars();
}
// запрос к БД
$cache->startDataCache();
$cache->endDataCache($data);
\CIBlock::registerWithTagCache($iblockId);

Структура Vue-приложения для Битрикса

  • Vue Router — lazy loading маршрутов через defineAsyncComponent. Каталог не тянет за собой код личного кабинета.
  • Pinia — стейт-менеджмент: каталог, корзина, пользователь, фильтры. Модульная архитектура хранилища. Vuex — легаси, новые проекты на Pinia.
  • Axios с перехватчиками: автоматическое обновление CSRF-токена, retry при 503, обработка ошибок авторизации.
  • Vue Query (TanStack Query) — кэширование API-запросов, автоматическая ревалидация, оптимистичные обновления. Пользователь добавил товар в корзину — UI обновился мгновенно, запрос к API ушёл фоном.

Каталог на Vue — разбор ключевого кейса

Разница в UX ощущается сразу. Конкретика:

  • Фильтр — чекбоксы, range-слайдеры, select с поиском. Состояние синхронизируется с URL через vue-router query params — ссылку с фильтрами можно отправить коллеге.
  • Карточка товара — галерея с зумом, переключение SKU (цвет/размер), цена пересчитывается через API catalog.product.offer.list, остатки по складам из catalog.store.product.list.
  • Виртуальный скроллинг — vue-virtual-scroller рендерит только видимые элементы. Каталог в 10 000 товаров работает без тормозов.
  • Умный поиск — debounced-запросы к search.title.search или ElasticSearch, автодополнение через выпадающий список. В нашем проекте это сократило время поиска на 40%.
  • Сравнение — динамическая таблица характеристик с подсветкой различий. Хранение в Pinia + localStorage для персистентности.

Как мы внедряем Vue.js: пошаговый план

  1. Аудит текущей архитектуры Битрикса и выявление узких мест (фильтрация, корзина, личный кабинет).
  2. Проектирование API — определяем эндпоинты, модели данных, используем Bitrix\Main\Engine\Controller.
  3. Разработка Vue-виджетов или SPA — сборка на Vite, Code Splitting, Pinia.
  4. Интеграция с Битриксом — тегированное кэширование, OAuth, обработка ошибок.
  5. Тестирование под нагрузкой (до 100 RPS) и деплой с CI/CD.

Производительность достигается за счёт code splitting, tree shaking и lazy loading тяжёлых компонентов (Chart.js, карты, WYSIWYG). Бандл страницы каталога — 80–120 КБ gzip.

Nuxt.js и SEO: как сохранить индексацию

SPA на чистом Vue отдаёт поисковику пустой HTML с <div id="app"></div>. Google умеет рендерить JS, но с задержкой в дни. Яндекс — вообще непредсказуемо. Nuxt.js решает:

  • SSR — сервер отдаёт полный HTML, после гидратации работает как SPA.
  • SSG — страницы генерируются при nuxt generate, раздаются с CDN. Максимальная скорость.
  • Гибридный режим — каталог статически, корзина и ЛК — SSR.
  • useHead() — динамические title, description, Open Graph, Schema.org для каждой страницы.
  • Sitemap — @nuxtjs/sitemap, маршруты из API Битрикса. Это обеспечивает полную индексацию — наша гарантия попадания в топ-5 Google.

Сравнение подходов и сроки

Ситуация Рекомендуемый подход Эффект для бизнеса
Каталог 10 000+ SKU, сложный фильтр Vue-виджеты Ускорение в 3–5 раз, рост конверсии 15-25%
B2B-портал, личный кабинет SPA на Vue Снижение нагрузки на сервер до 70%
Магазин с SEO-приоритетом Nuxt.js + headless Индексация 100% страниц, скорость загрузки 0,8 с
Подход Сроки Что на выходе
Vue-виджеты (2–5 компонентов) 1–3 недели Реактивные элементы на существующем сайте
SPA для личного кабинета 4–8 недель Vue-приложение + API на контроллерах D7
Каталог на Vue + Битрикс API 4–10 недель Фильтрация, корзина, сравнение без перезагрузок
Nuxt.js + Битрикс headless 6–12 недель SSR/SSG, полная функциональность, SEO

Полный цикл: проектирование API, разработка контроллеров D7, Vue-приложение, настройка Vite, тестирование, деплой. Код ревьюится, покрывается тестами, документируется — не «собрал и забыл». Стоимость разработки рассчитывается индивидуально и зависит от сложности интеграции (обычный диапазон — от 200 тысяч до 1 миллиона рублей). Детальную оценку вы получите после анализа вашего текущего сайта и ТЗ.

Типичные ошибки при интеграции Vue.js и Битрикс

  1. Использование ajax.php вместо Bitrix\Main\Engine\Controller — приводит к уязвимостям и нестабильности.
  2. Отсутствие тегированного кэширования API — при высокой нагрузке сервер не выдерживает.
  3. Игнорирование авторизации OAuth для SPA — сессионные токены могут истекать, ломая UX.
  4. Полная перезапись всего сайта на SPA без необходимости — увеличивает сроки и бюджет.
  5. Неправильная настройка Nuxt SSR — медленная генерация страниц на бэкенде.

Что входит в работу и наши гарантии

  • Документация API (Swagger/OpenAPI) для интеграции с вашим бэкендом.
  • Доступы к репозиторию с кодом и CI/CD.
  • Обучение вашей команды работе с Vue-компонентами.
  • Пост-релизная поддержка на 1 месяц — гарантия стабильности.
  • Код соответствует стандартам PSR-12 и Bitrix\Main\Engine\Controller.

Закажите разработку Vue.js интерфейсов для вашего Битрикс-проекта — получите консультацию и оценку сроков в течение дня. Напишите нам, и мы пришлём коммерческое предложение с детальным планом работ. Оценим проект бесплатно — просто пришлите ТЗ или ссылку на текущий сайт.