Стандартные возможности Битрикс24 не всегда покрывают специфические бизнес-процессы. Например, для отдела закупок нужен раздел с многоэтапным согласованием, интеграцией с 1С УТ и кастомным интерфейсом на Vue.js. В таких случаях разрабатывают SPA-приложение, встроенное в левое меню портала. За 10+ лет мы реализовали десятки подобных проектов. Свяжитесь с нами — оценим ваш проект и предложим решение. Бюджет типового проекта — от $1.5k–5k в зависимости от сложности.
Как устроен кастомный раздел в Битрикс24?
Кастомный раздел — это приложение, встроенное в левое меню портала через механизм placement. Технически это SPA, загружаемое в iframe внутри интерфейса Б24. Регистрация происходит через REST API метод placement.bind с типом LEFT_MENU. Подробнее о placement читайте в официальной документации.
Точка входа — файл, отдаваемый вашим сервером (или серверлесс-функцией). Битрикс24 загружает его в iframe, передавая параметры авторизации: AUTH_ID, REFRESH_ID, member_id. Через эти параметры приложение получает доступ к REST API портала.
Полный список параметров авторизации
Помимо AUTH_ID и REFRESH_ID, в iframe передаются member_id, portal_id, app_id. Полный перечень см. в документации.
BX24.init(function() { BX24.callMethod('user.current', {}, function(result) { // Текущий пользователь для проверки прав }); }); Пошаговая инструкция регистрации кастомного раздела
- Создайте приложение в Маркет → Свои приложения, тип: серверное.
- Укажите путь к вашему SPA в поле «Путь к файлу».
- Зарегистрируйте placement методом
placement.bindс типомLEFT_MENUи передайте URL. - Установите приложение на портал.
Когда стоит хранить данные в смарт-процессах?
Смарт-процессы (\Bitrix\Crm\Service\Factory) — конструктор CRM-сущностей. Создаёте тип через CRM → Настройки → Автоматизация → Смарт-процессы, добавляете пользовательские поля, настраиваете воронку. Данные хранятся в таблицах b_crm_dynamic_items_*.
Кастомный раздел в этом случае — альтернативный UI для работы с данными смарт-процесса. Вместо стандартной карточки и канбана вы рисуете свой интерфейс, а данные читаете и пишете через REST:
-
crm.item.list— получение списка элементов -
crm.item.add/crm.item.update— создание и обновление -
crm.item.fields— метаданные полей
Преимущество: бесплатно получаете воронки, роботов, бизнес-процессы, права доступа, историю изменений. Ограничение: REST API отдаёт максимум 50 элементов за запрос, для больших списков нужна пагинация. При 10 000+ записей интерфейс должен реализовать серверную фильтрацию.
Когда выгоднее внешняя БД?
Если данные сложнее плоского списка — связи многие-ко-многим, иерархии, специфические индексы — проще хранить во внешней PostgreSQL или MySQL. Кастомный раздел обращается к вашему бэкенду по API, а с Битрикс24 взаимодействует только для авторизации и получения контекста пользователя.
Схема: iframe загружает SPA → SPA проверяет AUTH_ID через oauth.bitrix.info/rest/ → получает user_id → запрашивает данные с вашего бэкенда по user_id.
Преимущество: нет лимитов REST API, полный контроль над структурой данных. Ограничение: теряете встроенные роботов и бизнес-процессы, права доступа нужно реализовать самостоятельно.
| Критерий | Смарт-процессы | Внешняя БД |
|---|---|---|
| Сложность данных | Плоские списки, до 5 связей | Любые связи, иерархии |
| Производительность | До 10 000 записей без оптимизации | Без ограничений |
| Встроенные роботы/БП | Да | Нет |
| Права доступа | Из CRM | Нужна своя реализация |
| Время разработки | Быстрее (1-2 недели) | Дольше (2-4 недели) |
Встроенные механизмы смарт-процессов позволяют реализовать раздел быстрее в 2-3 раза по сравнению с внешней БД, если бизнес-логика укладывается в модель CRM. Но для сложных сценариев внешняя БД даёт гибкость и масштабирование.
Интеграция с интерфейсом Б24
Для ощущения нативности кастомный раздел должен использовать дизайн-систему Битрикс24. Официальный UI-кит: @bitrix24/b24-ui. Он содержит компоненты, визуально идентичные стандартным элементам портала — кнопки, таблицы, фильтры, слайдеры.
Ключевые интеграционные точки:
- Слайдер — открытие карточки элемента в боковой панели через
BX24.openApplication({bx24_width: 800}) - Счётчики в меню — обновление бейджа через
BX24.appOption.set('bx24_leftMenuCounter', count) - Уведомления — отправка через
im.notify.system.addдля оповещения пользователей о событиях в разделе
Права доступа
Если данные в смарт-процессах — права наследуются из CRM (роли в настройках прав CRM-сущности). Для внешней БД реализуйте проверку через REST-метод user.current + маппинг ролей Б24 на роли вашего приложения.
Для проверки принадлежности к отделу: department.get возвращает структуру, user.get с фильтром по UF_DEPARTMENT — пользователей подразделения.
Что входит в работу
Наши сертифицированные специалисты разрабатывают кастомные разделы под ключ и гарантируют стабильную работу после запуска. В рамках проекта вы получаете:
- Архитектурную документацию и согласование плана разработки
- Доступ к репозиторию и staging-серверу
- Настройку прав доступа и интеграцию с роботами/БП (если используются смарт-процессы)
- Обучение администраторов портала работе с разделом
- Гарантийную поддержку в течение 30 дней после сдачи
Оставьте заявку — мы оценим сложность и предложим сроки. Опыт более 10 лет и десятки реализованных проектов гарантируют результат. Экономия по сравнению с покупкой готового CRM-решения может достигать 40%.
Оценка сроков
| Компонент | Оценка |
|---|---|
| Скелет приложения + регистрация в Б24 | 1–2 дня |
| CRUD-интерфейс списка (таблица, фильтры) | 3–5 дней |
| Карточка элемента со слайдером | 2–3 дня |
| Права доступа (внешняя БД) | 2–3 дня |
| Интеграция с роботами/БП (смарт-процесс) | 1–2 дня |
| Тестирование и деплой | 2–3 дня |
Итого для раздела средней сложности: 1.5–2.5 недели. Основная переменная — сложность бизнес-логики внутри раздела, а не сама интеграция с Битрикс24.
На что обратить внимание
Iframe-приложения работают в изолированном контексте. localStorage внутри iframe привязан к домену вашего сервера, а не к домену портала. Если у вас несколько порталов-клиентов — храните member_id в ключе storage, чтобы не смешивать данные.
Токен AUTH_ID живёт 1 час. Для долгих сессий реализуйте автообновление через REFRESH_ID — иначе пользователь получит ошибку авторизации. Чтобы избежать типичных ошибок при разработке, обратитесь к нашим инженерам. Мы гарантируем стабильную работу и предоставляем 30-дневную гарантийную поддержку.







