Разработка личного кабинета пользователя на 1С-Битрикс
Клиент звонит менеджеру: «Какой статус моего заказа?», «Пришлите акт сверки за прошлый квартал», «Мне нужен дубликат счёта». Менеджер лезет в 1С, формирует документ, отправляет на почту. Пять минут на каждый запрос, двадцать таких звонков в день — полтора часа чистого времени на работу, которую должен делать личный кабинет. На 1С-Битрикс ЛК строится из готовых компонентов, но полноценный B2B-кабинет с мультипользовательским доступом и интеграцией с 1С всегда требует доработки.
Архитектура личного кабинета
Типовой ЛК — раздел сайта /personal/ с набором подразделов, каждый из которых реализован компонентом Битрикс или кастомной страницей.
Стандартные компоненты:
-
bitrix:main.profile— просмотр и редактирование профиля -
bitrix:sale.personal.order— список заказов с детализацией -
bitrix:sale.personal.order.cancel— отмена заказа -
bitrix:catalog.viewed— просмотренные товары -
bitrix:main.feedback— форма обращения
На практике этого набора хватает для интернет-магазина с простой моделью: физлицо покупает, отслеживает заказ, скачивает чек. Для B2B, где от одной организации работают несколько человек с разными ролями, нужна надстройка.
Маршрутизация внутри ЛК — через ЧПУ-правила в .urlrewrite.php или комплексный компонент с SEF-режимом. Второй вариант удобнее: все страницы ЛК управляются из одного места.
Разграничение прав доступа
Система прав в Битрикс опирается на группы пользователей. Для ЛК это выглядит так:
- Зарегистрированный пользователь — базовый доступ: профиль, свои заказы
- Оптовый клиент — оптовые цены, дополнительные разделы (дебиторка, акты сверки)
- Контрагент — документы и взаиморасчёты по своей организации
- Партнёр — реферальная статистика, маркетинговые материалы
Группы назначаются при регистрации через обработчик OnAfterUserRegister или вручную менеджером. Права проверяются на двух уровнях: файловая система (/personal/b2b/ — доступ только для группы «Оптовики») и внутри компонентов (фильтрация данных по $USER->GetID()).
Deep-dive: B2B-кабинет с мультипользовательским доступом
Стандартный ЛК — один пользователь, один аккаунт, его заказы. В B2B от одной организации работают закупщик, бухгалтер, руководитель — и каждому нужен свой набор данных и прав. Это главная архитектурная задача.
Сущность «Организация». Создаётся через highload-блок или инфоблок с полями: название, ИНН, КПП, юридический адрес, условия оплаты, кредитный лимит. Пользователи привязываются к организации через пользовательское свойство UF_COMPANY_ID.
Роли внутри организации:
| Роль | Права |
|---|---|
| Администратор | Управление сотрудниками организации, все заказы и документы, финансы |
| Закупщик | Создание заказов, каталог с ценами организации, корзина |
| Бухгалтер | Документы, акты сверки, счета, дебиторка. Без доступа к оформлению заказов |
| Наблюдатель | Только просмотр заказов и статусов |
Администратор организации добавляет сотрудников через интерфейс ЛК: отправляет приглашение по email, новый пользователь регистрируется и автоматически привязывается к организации с указанной ролью. Не нужно звонить менеджеру и просить «добавить нашего нового закупщика».
Техническая реализация:
- Привязка пользователь -> организация хранится в
UF_COMPANY_IDили в отдельной таблице связей (для поддержки мультиорганизационного доступа, когда один человек работает с несколькими юрлицами) - Роли — отдельный highload-блок:
user_id,company_id,role - При авторизации в сессию загружается контекст организации и роль пользователя
- Компоненты фильтруют данные по
company_id: закупщик видит свои заказы, администратор — все заказы организации - Переключение между организациями — селектор в шапке ЛК
Согласование заказа. В крупных организациях заказ не уходит поставщику напрямую:
- Закупщик формирует заказ (статус «Черновик»)
- Руководитель закупок получает уведомление, проверяет состав и бюджет
- Согласует или возвращает на доработку с комментарием
- После согласования заказ переходит в статус «Подтверждён» и уходит в обработку
Реализуется через кастомные статусы заказа в модуле sale и обработчики событий OnSaleOrderBeforeSaved, OnSaleStatusOrder.
Разделы личного кабинета
Заказы
Компонент sale.personal.order — список с фильтрацией по статусу, дате, сумме. Детализация: состав, статусы оплаты и доставки, трек-номер. Расширения:
- Повторный заказ — копирование состава в корзину одной кнопкой
- Рекламация — форма претензии, привязанная к конкретному заказу и позиции
-
Печатные формы — генерация счёта, акта, накладной через
\Bitrix\Sale\Order::getDocuments()
Документы
Раздел для скачивания закрывающих документов: счета, акты, счета-фактуры, УПД. Документы генерируются из модуля sale или загружаются из 1С через интеграцию. Хранение — в привязке к заказу или к пользователю через highload-блок.
Для B2B критично, чтобы бухгалтер видел все документы организации, а не только свои. Фильтрация по company_id, а не по user_id.
Обращения
Тикет-система: пользователь создаёт обращение, прикладывает файлы, видит историю и статус. Реализация — через модуль support (техподдержка) или кастомная на инфоблоке / смарт-процессе CRM. Второй вариант удобнее, если обращения должны попадать в CRM и обрабатываться менеджером в привычном интерфейсе.
Баланс и взаиморасчёты
Для B2B-клиентов: текущий баланс, история платежей, дебиторская задолженность. Данные приходят из 1С через REST или файловый обмен. Акт сверки формируется по запросу — пользователь нажимает кнопку, запрос уходит в 1С, PDF возвращается в течение нескольких минут.
Интеграция с 1С
Связка ЛК с 1С — обязательный элемент для B2B. Стандартный модуль обмена sale + catalog синхронизирует каталог и заказы, но для полноценного ЛК нужен расширенный обмен.
Из 1С в ЛК:
- История заказов, включая оформленные по телефону или через менеджера
- Дебиторская задолженность по контрагенту
- Акты сверки в PDF
- Персональные цены и скидки по прайс-листу контрагента
- Статусы отгрузки и оплаты
Обмен — через REST API (модуль rest), SOAP-сервисы или CommerceML с расширенной схемой. Для высоконагруженных систем данные кэшируются в highload-блоках: при запросе пользователя ЛК читает локальный кэш, а не ждёт ответа от 1С. Синхронизация — по расписанию (cron-агент) или по событию (webhook при изменении данных в 1С).
Безопасность
ЛК работает с персональными данными и финансовой информацией. Минимальный набор мер:
- HTTPS для всего раздела
/personal/ - CAPTCHA или rate-limiting на форме авторизации — защита от перебора
- Двухфакторная аутентификация через модуль
security(OTP) - Логирование действий пользователя в модуле «Проактивная защита»
- Автоматическое завершение сессии при бездействии (настраивается в модуле
security) - Для B2B — опциональное ограничение сессии по IP
Этапы разработки
| Масштаб | Что входит | Срок |
|---|---|---|
| Базовый ЛК (B2C) | Профиль, заказы, избранное, обращения | 1–2 недели |
| Расширенный ЛК (B2B) | + документы, баланс, интеграция с 1С | 2–4 недели |
| Мультипользовательский B2B | + роли, организации, согласование заказов | 4–6 недель |
| B2B с полной интеграцией | + персональные цены, акты сверки, дебиторка из 1С в реальном времени | 6–8 недель |
Стоимость рассчитывается после анализа требований — слишком большой разброс между «профиль + заказы» и «мультиорганизационный B2B-кабинет с согласованием и интеграцией с тремя учётными системами».







