Разработка личного кабинета на React для 1С-Битрикс

Мы знаем не понаслышке: штатный личный кабинет в 1С-Битрикс — это набор PHP-компонентов `bitrix:sale.personal.*`, которые рендерятся на сервере, отдают полную HTML-страницу и при любом действии пользователя (смена адреса доставки, просмотр статуса заказа) выполняют полный page reload. На небольших м
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка личного кабинета на React для 1С-Битрикс
Средний
~1-2 недели

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

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

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

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

Мы знаем не понаслышке: штатный личный кабинет в 1С-Битрикс — это набор PHP-компонентов bitrix:sale.personal.*, которые рендерятся на сервере, отдают полную HTML-страницу и при любом действии пользователя (смена адреса доставки, просмотр статуса заказа) выполняют полный page reload. На небольших магазинах это терпимо. Когда в кабинете появляется история заказов на 200+ позиций, система лояльности, несколько адресов доставки, документы и интеграция с внешними сервисами — штатный подход становится узким местом по UX и производительности. Разработка личного кабинета на React решает эту проблему: сервер отдаёт только данные через REST, интерфейс живёт в браузере. Это даёт мгновенные переходы между разделами, обновление данных без перезагрузки, возможность строить сложные интерактивные формы без перекомпоновки страницы. По данным нашего кейса, React-кабинет сокращает время загрузки на 70% и снижает операционные затраты на поддержку.

Как React-кабинет повышает производительность?

При серверном рендеринге каждый переход — это новый запрос, который собирает всю страницу заново. React-кабинет загружает только данные: список заказов, профиль, историю. Браузер обновляет только нужную часть интерфейса. Например, переключение между вкладками «Заказы» и «Адреса» занимает 50–100 мс вместо 1–2 секунд полной перезагрузки. Это подтверждено нашими кейсами: время загрузки страницы заказов сократилось с 4,2 до 0,9 секунды (см. таблицу ниже).

Архитектура интеграции

Есть два принципиально разных способа встроить React-кабинет в Битрикс.

Вариант 1: React внутри шаблона Битрикс. На PHP-странице /personal/ монтируется React-приложение в контейнер <div id="personal-root"></div>. Битрикс отвечает за авторизацию, SEO (title, meta), общий layout (шапка, футер). React управляет только содержимым кабинета. Роутинг — через React Router с BrowserRouter, история браузера синхронизируется с URL. Этот вариант проще в интеграции: авторизация через стандартный $USER->Login(), сессия Битрикс передаётся автоматически, CSRF-токен берётся из BX.bitrix_sessid().

Вариант 2: SPA с JWT-авторизацией. React-приложение живёт отдельно (отдельный домен или поддомен), взаимодействует с Битрикс исключительно через REST API с JWT-токенами. Авторизация — через кастомный endpoint, токен хранится в httpOnly cookie или localStorage. Этот вариант оправдан, когда кабинет должен работать и с мобильным приложением, и с веб-версией через одно API. Для большинства проектов оптимален Вариант 1 — он проще в поддержке, не требует отдельного деплоя, авторизация уже решена.

Параметр React внутри шаблона Отдельное SPA
Сложность развёртывания Низкая (один сайт) Высокая (CORS, отдельный хостинг)
Авторизация Использует сессию Битрикс JWT-токены, кастомная
Скорость работы Быстро (без перезагрузки) Быстро (без перезагрузки)
SEO страниц кабинета Поддерживается Плохая (нужна изоляция)
Совместимость с модулями Полная Ограниченная (только REST)

API-слой на стороне Битрикс

React-компоненты работают с данными через AJAX-запросы к Битрикс. Для этого создаётся контроллер в /local/php_interface/include/api/personal/:

// Пример: endpoint для списка заказов class PersonalOrdersController extends \Bitrix\Main\Engine\Controller { public function getListAction(int $page = 1, int $limit = 20): array { $userId = \Bitrix\Main\Engine\CurrentUser::get()->getId(); $orderList = \Bitrix\Sale\Order::getList([ 'filter' => ['USER_ID' => $userId], 'select' => ['ID', 'DATE_INSERT', 'PRICE', 'STATUS_ID', 'CURRENCY'], 'order' => ['DATE_INSERT' => 'DESC'], 'limit' => $limit, 'offset' => ($page - 1) * $limit, ]); $orders = []; while ($order = $orderList->fetch()) { $orders[] = $order; } return [ 'orders' => $orders, 'total' => \Bitrix\Sale\Internals\OrderTable::getCount(['USER_ID' => $userId]), ]; } } 

Роутинг в Битрикс через local/ajax/personal.php с диспетчером или через \Bitrix\Main\Engine\Router. Для CSRF-защиты все POST-запросы из React передают заголовок BX-Ajax: true и токен сессии.

Структура React-приложения

src/ personal/ api/ # axios-инстанс, типы запросов components/ # переиспользуемые UI-элементы pages/ Orders/ # история заказов OrderDetail/ # детальная страница заказа Profile/ # данные профиля Addresses/ # адреса доставки Loyalty/ # бонусная программа store/ # состояние (Zustand или Redux Toolkit) App.tsx router.tsx 

Управление состоянием: для простых кабинетов достаточно React Query (кеш запросов + синхронизация) без глобального стора. Для сложных — Zustand как более лёгкая альтернатива Redux.

Кейс из нашей практики: кабинет для B2B-дистрибьютора

Оптовый поставщик электроники, ~1 500 активных клиентских аккаунтов. Задача: личный кабинет для менеджеров клиента — возможность видеть историю закупок, формировать повторный заказ из истории, управлять несколькими юридическими лицами в одном аккаунте, скачивать закрывающие документы. Штатный Битрикс-кабинет не поддерживал мультиюрлицо в принципе, а история заказов на 3 000+ строк рендерилась сервером 4–6 секунд.

Подробнее о реализации
  1. API-контроллер для заказов с серверной пагинацией, фильтрацией по дате/статусу и поиском по номеру заказа. Запрос на страницу из 50 позиций — 80–120 мс против 4+ секунд при полном рендере.

  2. Мультиюрлицо через кастомную таблицу local_personal_company (связь user_id → company_id), переключатель компаний в шапке кабинета с перезагрузкой контекста через React Query invalidateQueries.

  3. «Повторить заказ» — кнопка в истории, которая добавляет все позиции заказа в корзину через \Bitrix\Sale\Basket::create() и делает bulk-insert товаров. На фронте — анимированный индикатор, тостовое уведомление об успехе.

  4. Документы — интеграция с 1С: заказ документов через REST 1С, статус генерации через polling каждые 3 секунды, скачивание PDF напрямую из 1С по временной ссылке.

Метрика До После
Загрузка страницы заказов 4.2 сек 0.9 сек
Повторный заказ 5 шагов, 2 минуты 1 клик, 3 секунды
Обращения в поддержку по документам ~40/мес ~8/мес

Уменьшение числа обращений в поддержку на 80% сокращает расходы на обслуживание. Это позволяет сэкономить бюджет на поддержку и направить ресурсы на развитие.

Что входит в разработку кабинета под ключ?

  • Проектирование API: эндпоинты, структура данных, пагинация, фильтрация.
  • Разработка серверной части: контроллеры, авторизация, права доступа.
  • Разработка React-приложения: роутинг, компоненты, управление состоянием.
  • Интеграция с модулями Битрикс: sale, catalog, crm при необходимости.
  • Сборка, деплой, настройка кеширования API-ответов.
  • Документация по API и структуре компонентов.
  • Обучение администраторов: как добавлять новые разделы или менять данные.
  • Гарантия: мы поддерживаем работоспособность сборки и API в течение 3 месяцев после сдачи.

Ориентировочные сроки

Базовый кабинет (профиль + заказы + адреса) — 3–4 недели. Полнофункциональный B2B-кабинет с мультиюрлицами, интеграцией с 1С и документооборотом — 2–4 месяца. Сроки уточняем после аудита ваших требований на бесплатной консультации.

Почему выбирают React для личного кабинета?

React-кабинет в 3–5 раз быстрее штатного на страницах с большими объёмами данных. Он позволяет строить интерфейсы, которые невозможно реализовать на штатных компонентах — например, мультиюрлицо, динамические фильтры, редактирование в реальном времени. Кроме того, React-приложение проще поддерживать и расширять за счёт модульной архитектуры. Если у вас сложный кабинет с уникальной логикой — это правильный выбор.

Закажите бесплатную консультацию: мы оценим ваш проект и предложим оптимальное решение. Работаем под ключ: от проектирования API до деплоя и обучения. Получите консультацию — мы расскажем, как React ускорит ваш кабинет и снизит затраты на поддержку.