# Role Compile

Создание роли 1С из описания прав.

- Repository: https://github.com/Nikolay-Shirokov/cc-1c-skills (750 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-31
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add Nikolay-Shirokov/cc-1c-skills --skill role-compile -g -a claude-code -y`
Codex: `npx skills add Nikolay-Shirokov/cc-1c-skills --skill role-compile -g -a codex -y`
Cursor: `npx skills add Nikolay-Shirokov/cc-1c-skills --skill role-compile -g -a cursor -y`
Gemini CLI: `npx skills add Nikolay-Shirokov/cc-1c-skills --skill role-compile -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add Nikolay-Shirokov/cc-1c-skills`

## Description

Создание роли 1С из описания прав. Используй когда нужно создать новую роль с набором прав на объекты

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /role-compile, генерация роли 1С из JSON DSL

Принимает JSON-определение роли → генерирует `Roles/Имя.xml` (метаданные) и `Roles/Имя/Ext/Rights.xml` (права). UUID автоматически.

## Параметры и команда

| Параметр | Описание |
|----------|----------|
| `JsonPath` | Путь к JSON-определению роли |
| `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Roles/` и т.д.) |

```powershell
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -JsonPath "<json>" -OutputDir "<ConfigDir>"
```

Создаёт `{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", "rls": {"Read": "#Шаблон(\"\")"} },
  { "name": "Catalog.Номенклатура.Attribute.Цена", "rights": {"View": false} }
]
```

- Shorthand: `"Тип.Имя: @пресет"` или `"Тип.Имя: Право1, Право2"`
- Объектная форма: `preset` + `rights` (точечные значения прав) + `rls` (ограничения)

### Пресеты

| Пресет | Действие |
|--------|----------|
| `@view` | Просмотр, Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
| `@edit` | Полное редактирование, CRUD + Interactive* + Posting (документы) |

`@` обязателен в shorthand. В объектной форме, `"preset": "view"` без `@`.


### Сервисы

Право живёт на **вложенном объекте** сервиса, методе шаблона URL, операции, канале; на сервисе целиком его не бывает. Весь сервис, короткая запись, навык раскроет её по метаданным в `OutputDir`:

The rest: https://github.com/Nikolay-Shirokov/cc-1c-skills/blob/HEAD/.claude/skills/role-compile/SKILL.md
