git:20260428.73f4551 to git:20260828.2b87e3e

9 added, 9 removed. Audit A to A.

---
name: 1c-role-compile
description: Создание роли 1С из описания прав. Используй когда нужно создать новую роль с набором прав на объекты
argument-hint: <JsonPath> <OutputDir>
allowed-tools:
- Bash
- Read
- Write
- Glob
---
- # /role-compile — генерация роли 1С из JSON DSL
+ # /role-compile - генерация роли 1С из JSON DSL
Принимает JSON-определение роли → генерирует `Roles/Имя.xml` (метаданные) и `Roles/Имя/Ext/Rights.xml` (права). UUID автоматически.
## Параметры и команда
| Параметр | Описание |
|----------|----------|
| `JsonPath` | Путь к JSON-определению роли |
| `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Roles/` и т.д.) |
```powershell
powershell.exe -NoProfile -File skills/1c-role-compile/scripts/role-compile.ps1 -JsonPath "<json>" -OutputDir "<ConfigDir>"
```
- Создаёт `{OutputDir}/Roles/Имя.xml` и `{OutputDir}/Roles/Имя/Ext/Rights.xml`. Регистрирует `<Role>` в `Configuration.xml`.
+ Создает `{OutputDir}/Roles/Имя.xml` и `{OutputDir}/Roles/Имя/Ext/Rights.xml`. Регистрирует `<Role>` в `Configuration.xml`.
## JSON DSL
### Структура
```json
{ "name": "ИмяРоли", "synonym": "Отображаемое имя", "objects": [...], "templates": [...] }
```
Необязательные: `comment` (""), `setForNewObjects` (false), `setForAttributesByDefault` (true), `independentRightsOfChildObjects` (false).
### Shorthand-строки и объектная форма
```json
"objects": [
"Catalog.Номенклатура: @view",
"Document.Реализация: @edit",
"DataProcessor.Загрузка: @view",
"InformationRegister.Цены: Read, Update",
{ "name": "Document.Продажа", "preset": "view", "rights": {"Delete": false}, "rls": {"Read": "#Шаблон(\"\")"} }
]
```
- Shorthand: `"Тип.Имя: @пресет"` или `"Тип.Имя: Право1, Право2"`
- Объектная форма: `preset` + `rights` (переопределения) + `rls` (ограничения)
### Пресеты
| Пресет | Действие |
|--------|----------|
- | `@view` | Просмотр — Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
- | `@edit` | Полное редактирование — CRUD + Interactive* + Posting (документы) |
+ | `@view` | Просмотр - Read, View (+InputByString для справочников/документов; Use+View для обработок/отчетов) |
+ | `@edit` | Полное редактирование - CRUD + Interactive* + Posting (документы) |
- `@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`.
+ `@` обязателен в shorthand. В объектной форме - `"preset": "view"` без `@`.
- Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`.
+ Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены - используй явные права: `"WebService.Имя: Use"`.
### Русские синонимы
Поддерживаются русские типы (`Справочник`→Catalog, `Документ`→Document) и права (`Чтение`→Read, `Просмотр`→View). Смешивание допустимо: `"Справочник.Контрагенты: Чтение, View"`.
### Шаблоны RLS
```json
"templates": [{"name": "ДляОбъекта(Мод)", "condition": "ГДЕ Организация = &ТекОрг"}]
```
Ссылка в `rls`: `"#ДляОбъекта(\"\")"`. Символ `&` автоматически экранируется в XML.
## Примеры
### Простая роль
```json
{
"name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры",
"objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @view"]
}
```
### Роль с RLS
```json
{
"name": "ЧтениеДокументовПоОрганизации",
"synonym": "Чтение документов (ограничение по организации)",
"objects": [
"Catalog.Организации: @view",
{"name": "Document.РеализацияТоваровУслуг", "preset": "view", "rls": {"Read": "#ДляОбъекта(\"\")"}}
],
"templates": [{"name": "ДляОбъекта(Модификатор)", "condition": "ГДЕ Организация = &ТекущаяОрганизация"}]
}
```
- Подробные таблицы пресетов, русских синонимов и дополнительные примеры — в `dsl-reference.md`.
+ Подробные таблицы пресетов, русских синонимов и дополнительные примеры - в `dsl-reference.md`.
## Верификация
```
- /role-validate <RightsPath> [MetadataPath] — проверка корректности XML, прав, RLS
- /role-info <RightsPath> — визуальная сводка структуры
+ /role-validate <RightsPath> [MetadataPath] - проверка корректности XML, прав, RLS
+ /role-info <RightsPath> - визуальная сводка структуры
```