Коротко — универсального «одного клика» решения в стандартном экспорте 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; прямой дамп таблиц допустим только при полном понимании структуры и с осторожностью.