Как экспортировать роли пользователей и связанные с ними права доступа для цифровых рабочих мест?

Стандартный механизм «Экспорт/Импорт отраслевого CRM» в Битрикс не переносит роли и права доступа для смарт‑процессов — каким оптимальным образом можно реализовать экспорт/импорт этих ролей и прав при переносе CRM?
  • 20 февраля 2026 г. 11:03
Ответы на вопрос 2
Коротко — универсального «одного клика» решения в стандартном экспорте CRM Битрикс нет. Оптимальная и надёжная схема — экспортировать описание ролей/прав в переносимый формат (JSON / CSV) и восстанавливать их программно через API/интерфейсы Битрикс (или — в крайнем случае — через аккуратные SQL‑дампы таблиц), сопоставляя пользователей/группы по уникальным признакам (email, external_id, символьный код). Ниже — практический план и рекомендации.

1) Подготовка (общее правило)
- Работать на копии системы и иметь полный бэкап БД.
- По возможности использовать высокоуровневые API Битрикс (REST или PHP API). Это сохраняет целостность данных и корректно обновляет кеши/кэши прав.
- Экспортируйте не только роли, но и сопоставление «роль → пользователи/группы» в виде уникальных идентификаторов (email, логин, символьный код группы), чтобы на целевой системе можно было найти пользователей/группы.

2) Структура экспорта (пример JSON)
Экспортируйте файл, содержащий:
- роли: { code, name, description, scope (тип смарт‑процесса или ID шаблона) }
- права для каждой роли: { entity_type, entity_id (если нужно), operations: [view, edit, delete, ...] }
- назначенные пользователи: [user_email|user_external_id|user_login]
- назначенные группы/отделы: [group_code|group_name]

Пример:
{
  "roles": [
    {
      "code": "sp_manager_deals",
      "name": "Менеджер сделок",
      "description": "...",
      "scope": "smart_process_DEAL",
      "rights": [
        {"entity":"element", "ops":["view","edit","add"]},
        {"entity":"workflow", "ops":["start","view"]}
      ],
      "users":["ivanov@example.com","petrov@example.com"],
      "groups":["sales","managers"]
    }
  ]
}

3) Как собрать экспорт (варианты)
A) Через REST API (если доступен)
- Проверьте документацию REST на вашей версии Битрикс/Битрикс24: там могут быть методы, относящиеся к смарт‑процессам и ролям. Если есть — автоматизируйте вызовы, получите структуру ролей и прав, сохраните JSON.

B) Через PHP‑скрипт на стороне сайта (рекомендуется для On‑Premise)
- Напишите скрипт (администраторский), который использует API модулей CRM/бизнес‑процессов/смарт‑процессов, перечисляет все роли и их права и экспортирует JSON.
- При сборе прав используйте публичные API классов (не прямые SQL), чтобы получить корректные представления прав.

C) Через прямые SQL‑запросы (крайняя мера)
- Определите конкретные таблицы, в которых на вашей версии хранятся роли смарт‑процессов (это версия‑зависимо). Выполните выборку, но будьте осторожны: прямой импорт таких таблиц на другой системе может сломать целостность. Используйте SQL только если уверенны в структуре и делаете соответствующие пересчёты ID.

4) Как выполнить импорт на целевой системе
- На целевой системе сначала создайте (или найдите) пользователей и группы по уникальным атрибутам (email/логин/символьный код). Если пользователей нет — отметьте их как «будут назначены вручную».
- Импорт ролей и прав выполняйте через API:
  - создайте роль (создание через API/метод модуля смарт‑процессов или инсталляционный скрипт модуля);
  - для каждой роли установите права через API (функции установки прав для смарт‑процесса/шаблона);
  - назначьте пользователей/группы ролям, подтягивая локальные ID по email/логину.
- После импорта очистите кеш прав и проверьте тестовыми аккаунтами.

5) Практические советы и подводные камни
- Идентификаторы (ID) ролей/пользователей/групп не совпадут между инстансами — используйте стабильные внешние ключи (email, логин или свой external_id) для сопоставления.
- Номера операций/строк прав (например, B24 «operations» или «permission codes») могут отличаться по версиям — экспортируйте человекочитаемую форму («view», «edit», «delete») и при импорте конвертируйте в локальные коды.
- Если вы переносите на облачный Битрикс24, у вас ограничен доступ к внутренним таблицам — используйте только REST.
- При большом количестве ролей/прав реализуйте маппинг и отчёт о неуспешных назначениях — чтобы исправить вручную.
- Тестируйте на тестовой инстанции, затем переносите в прод.

6) Примерный псевдокод экспорта/импорта (псевдо‑PHP)
Экспорт (псевдокод):
- подключиться к Bitrix
- $roles = getSmartProcessRoles(); // используется API/функции модуля
- foreach $roles as $r: собрать $r->name, $r->scope, $r->rights, $r->users, $r->groups
- сохранить JSON

Импорт (псевдокод):
- прочитать JSON
- foreach $role:
  - localRoleId = findRoleByCode($role.code) или createRole($role.name)
  - foreach $right in $role.rights: setRight(localRoleId, convertOp($right.ops), $right.entity)
  - foreach $userIdentifier in $role.users: $uid = findUserByEmail($userIdentifier); if $uid then assignRoleToUser(localRoleId, $uid)

7) Если нужен конкретный код — что потребуется от вас
- версия Битрикс (On‑Premise, Enterprise, Cloud)
- какая конкретно сущность «смарт‑процессы» используется (CRM‑SmartProcess/Бизнес‑процессы/Custom)
- пример структуры роли/права в вашей системе (можете прислать JSON/скрин с интерфейса)

Если хотите — могу:
- прислать шаблон PHP‑скрипта для экспорта ролей/прав, адаптируемый под вашу версию; либо
- помочь локально определить таблицы и дать безопасные SQL‑запросы (если у вас On‑Premise) — пришлите версию Битрикс и дамп структуры таблиц (или права на подключение тестовой БД).

Резюме: лучший путь — экспортировать описание ролей/прав в JSON и восстанавливать через API, сопоставляя пользователей по email/external_id; прямой дамп таблиц допустим только при полном понимании структуры и с осторожностью.
Никак нельзя, если коробка, написать свой переносчик прав. А в облаке еще и права не всем тарифам доступны. Видимо поэтому они сами не сделали экспорт. Руками только переносить :(
Похожие вопросы