# Роли (Role) Навыки группы `/role-*` позволяют анализировать, создавать и проверять роли 1С — XML-файлы прав доступа (Rights.xml) и метаданных. ## Навыки | Навык | Параметры | Описание | |-------|-----------|----------| | `/role-info` | `` | Компактная сводка прав: объекты по типам, только разрешённые, RLS, шаблоны | | `/role-compile` | ` ` | Генерация роли из JSON DSL: метаданные + Rights.xml, UUID автоматически | | `/role-validate` | ` [MetadataPath]` | Валидация структурной корректности: XML, namespace, права, RLS, шаблоны | ## Рабочий цикл ``` Описание прав (текст) → JSON DSL → /role-compile → XML-исходники → /role-validate → /role-info ``` 1. Claude формирует JSON-определение роли (с пресетами или явными правами) 2. `/role-compile` генерирует `Roles/ИмяРоли.xml` + `Roles/ИмяРоли/Ext/Rights.xml` 3. `/role-validate` проверяет корректность сгенерированного XML 4. `/role-info` выводит компактную сводку для визуальной проверки ## JSON DSL — компактный формат Роли описываются в JSON с двумя уровнями детализации: ### Строковый shorthand (простые роли) ```json { "name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры", "objects": [ "Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @use" ] } ``` Формат строки: `Тип.Имя: @пресет` или `Тип.Имя: Право1, Право2`. ### Объектная форма (RLS, переопределения) ```json { "name": "Document.Реализация", "preset": "view", "rights": { "Delete": false }, "rls": { "Read": "#ДляОбъекта(\"\")" } } ``` Форматы можно смешивать в одном массиве `objects`. ### Пресеты | Пресет | Действие | |--------|----------| | `@view` | Просмотр: Read, View, InputByString (для справочников/документов); Read, View (для регистров) | | `@edit` | Полное редактирование: CRUD + Interactive* + Posting (для документов) | | `@use` | Использование: Use, View (для обработок/отчётов/сервисов) | `@` обязателен в строковом shorthand. В объектной форме — ключ `preset` без `@`. ### Русские синонимы Скрипт принимает русские имена типов и прав: `Справочник` → Catalog, `Чтение` → Read, `Проведение` → Posting и т.д. Полный список — в [спецификации Role DSL](role-dsl-spec.md). ## Сценарии использования ### Анализ существующей роли ``` > Проанализируй права роли Roles/БазовыеПраваБП/Ext/Rights.xml ``` Claude вызовет `/role-info`, получит компактную сводку (тысячи строк XML → 50–300 строк текста) и опишет: - какие объекты доступны и с какими правами - где есть ограничения RLS - какие шаблоны ограничений используются ### Создание роли по описанию ``` > Создай роль МенеджерПродаж с правами: > - Документ РеализацияТоваровУслуг: полные права > - Справочник Контрагенты: чтение > - Справочник Номенклатура: чтение > - Регистр ЦеныНоменклатуры: чтение ``` Claude сформирует JSON с пресетами: ```json { "name": "МенеджерПродаж", "synonym": "Менеджер продаж", "objects": [ "Document.РеализацияТоваровУслуг: @edit", "Catalog.Контрагенты: @view", "Catalog.Номенклатура: @view", "InformationRegister.ЦеныНоменклатуры: @view" ] } ``` И вызовет `/role-compile` → `/role-validate` → `/role-info`. ### Создание роли для регламентного задания ``` > Проанализируй модуль регламентного задания ОбновлениеКурсовВалют > и создай роль с минимальными правами для его выполнения ``` Claude проанализирует код, определит используемые объекты, создаст JSON с точечными правами (без пресетов — только нужные права), и скомпилирует роль. ### Создание роли с RLS ``` > Создай роль для чтения документов с ограничением по организации ``` Claude использует объектную форму JSON с шаблонами ограничений. ### Проверка существующей роли ``` > Проверь корректность роли Roles/МояРоль/Ext/Rights.xml ``` Claude вызовет `/role-validate` и покажет результат: ошибки (невалидный XML, отсутствующие элементы) и предупреждения (неизвестные типы объектов, подозрительные имена прав с подсказками). ## Структура файлов роли ``` Roles/ ├── ИмяРоли.xml # Метаданные (UUID, синоним) └── ИмяРоли/ └── Ext/ └── Rights.xml # Права доступа ``` Регистрация в `Configuration.xml`: ```xml ИмяРоли ``` ## Спецификация - [1c-role-spec.md](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS, шаблоны ограничений - [role-dsl-spec.md](role-dsl-spec.md) — JSON DSL для описания ролей (формат входных данных `/role-compile`)