$npx -y skills add Nikolay-Shirokov/cc-1c-skills --skill role-compileСоздание роли 1С из описания прав. Используй когда нужно создать новую роль с набором прав на объекты
| 1 | # /role-compile — генерация роли 1С из JSON DSL |
| 2 | |
| 3 | Принимает JSON-определение роли → генерирует `Roles/Имя.xml` (метаданные) и `Roles/Имя/Ext/Rights.xml` (права). UUID автоматически. |
| 4 | |
| 5 | ## Параметры и команда |
| 6 | |
| 7 | | Параметр | Описание | |
| 8 | |----------|----------| |
| 9 | | `JsonPath` | Путь к JSON-определению роли | |
| 10 | | `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Roles/` и т.д.) | |
| 11 | |
| 12 | ```powershell |
| 13 | powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -JsonPath "<json>" -OutputDir "<ConfigDir>" |
| 14 | ``` |
| 15 | |
| 16 | Создаёт `{OutputDir}/Roles/Имя.xml` и `{OutputDir}/Roles/Имя/Ext/Rights.xml`. Регистрирует `<Role>` в `Configuration.xml`. |
| 17 | |
| 18 | ## JSON DSL |
| 19 | |
| 20 | ### Структура |
| 21 | |
| 22 | ```json |
| 23 | { "name": "ИмяРоли", "synonym": "Отображаемое имя", "objects": [...], "templates": [...] } |
| 24 | ``` |
| 25 | |
| 26 | Необязательные: `comment` (""), `setForNewObjects` (false), `setForAttributesByDefault` (true), `independentRightsOfChildObjects` (false). |
| 27 | |
| 28 | ### Shorthand-строки и объектная форма |
| 29 | |
| 30 | ```json |
| 31 | "objects": [ |
| 32 | "Catalog.Номенклатура: @view", |
| 33 | "Document.Реализация: @edit", |
| 34 | "DataProcessor.Загрузка: @view", |
| 35 | "InformationRegister.Цены: Read, Update", |
| 36 | { "name": "Document.Продажа", "preset": "view", "rights": {"Delete": false}, "rls": {"Read": "#Шаблон(\"\")"} } |
| 37 | ] |
| 38 | ``` |
| 39 | |
| 40 | - Shorthand: `"Тип.Имя: @пресет"` или `"Тип.Имя: Право1, Право2"` |
| 41 | - Объектная форма: `preset` + `rights` (переопределения) + `rls` (ограничения) |
| 42 | |
| 43 | ### Пресеты |
| 44 | |
| 45 | | Пресет | Действие | |
| 46 | |--------|----------| |
| 47 | | `@view` | Просмотр — Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) | |
| 48 | | `@edit` | Полное редактирование — CRUD + Interactive* + Posting (документы) | |
| 49 | |
| 50 | `@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`. |
| 51 | |
| 52 | Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`. |
| 53 | |
| 54 | ### Русские синонимы |
| 55 | |
| 56 | Поддерживаются русские типы (`Справочник`→Catalog, `Документ`→Document) и права (`Чтение`→Read, `Просмотр`→View). Смешивание допустимо: `"Справочник.Контрагенты: Чтение, View"`. |
| 57 | |
| 58 | ### Шаблоны RLS |
| 59 | |
| 60 | ```json |
| 61 | "templates": [{"name": "ДляОбъекта(Мод)", "condition": "ГДЕ Организация = &ТекОрг"}] |
| 62 | ``` |
| 63 | |
| 64 | Ссылка в `rls`: `"#ДляОбъекта(\"\")"`. Символ `&` автоматически экранируется в XML. |
| 65 | |
| 66 | ## Примеры |
| 67 | |
| 68 | ### Простая роль |
| 69 | |
| 70 | ```json |
| 71 | { |
| 72 | "name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры", |
| 73 | "objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @view"] |
| 74 | } |
| 75 | ``` |
| 76 | |
| 77 | ### Роль с RLS |
| 78 | |
| 79 | ```json |
| 80 | { |
| 81 | "name": "ЧтениеДокументовПоОрганизации", |
| 82 | "synonym": "Чтение документов (ограничение по организации)", |
| 83 | "objects": [ |
| 84 | "Catalog.Организации: @view", |
| 85 | {"name": "Document.РеализацияТоваровУслуг", "preset": "view", "rls": {"Read": "#ДляОбъекта(\"\")"}} |
| 86 | ], |
| 87 | "templates": [{"name": "ДляОбъекта(Модификатор)", "condition": "ГДЕ Организация = &ТекущаяОрганизация"}] |
| 88 | } |
| 89 | ``` |
| 90 | |
| 91 | Подробные таблицы пресетов, русских синонимов и дополнительные примеры — в `dsl-reference.md`. |
| 92 | |
| 93 | ## Верификация |
| 94 | |
| 95 | ``` |
| 96 | /role-validate <RightsPath> [MetadataPath] — проверка корректности XML, прав, RLS |
| 97 | /role-info <RightsPath> — визуальная сводка структуры |
| 98 | ``` |