Files
cc-1c-skills/docs/role-dsl-spec.md
T
Nick Shirokov 8b8bc1225a Refactor role-compile SKILL.md with progressive disclosure
Extract detailed preset tables, Russian synonym tables, and extra
examples into dsl-reference.md (318 lines). Compact SKILL.md from
340 to 107 lines. Add role-dsl-spec.md project spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:13:59 +03:00

114 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Спецификация Role JSON DSL
Формат JSON для описания ролей 1С, используемый навыком `/role-compile`.
## Обзор
Role JSON DSL — компактный JSON-формат, транслируемый скриптом в XML-файлы роли 1С:Предприятия (метаданные + Rights.xml). Поддерживает пресеты прав, русские синонимы типов и прав, шаблоны ограничений (RLS).
## Корневой объект
| Поле | Тип | Обяз. | По умолчанию | Описание |
|------|-----|:-----:|:------------:|----------|
| `name` | string | да | — | Программное имя роли |
| `synonym` | string | нет | = name | Отображаемое имя |
| `comment` | string | нет | `""` | Комментарий |
| `setForNewObjects` | bool | нет | `false` | Устанавливать для новых объектов |
| `setForAttributesByDefault` | bool | нет | `true` | Устанавливать для реквизитов по умолчанию |
| `independentRightsOfChildObjects` | bool | нет | `false` | Независимые права подчинённых объектов |
| `objects` | array | нет | `[]` | Массив объектов метаданных с правами |
| `templates` | array | нет | `[]` | Шаблоны ограничений (RLS) |
## Элементы `objects`
Массив принимает два формата, которые можно смешивать.
### Строковый shorthand
```
"Тип.Имя: @пресет"
"Тип.Имя: Право1, Право2"
```
Тип — английский (Catalog) или русский (Справочник). Права — английские (Read) или русские (Чтение).
### Объектная форма
| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|----------|
| `name` | string | да | Полное имя объекта: `Тип.Имя` |
| `preset` | string | нет | Пресет: `"view"`, `"edit"`, `"use"` (без `@`) |
| `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` |
| `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` |
При наличии `preset` + `rights` — сначала применяется пресет, затем `rights` переопределяют отдельные права.
## Пресеты
Три встроенных пресета определяют набор прав в зависимости от типа объекта:
| Пресет | Назначение |
|--------|------------|
| `view` | Просмотр: Read, View (+InputByString для справочников/документов) |
| `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) |
| `use` | Использование: Use, View (обработки/отчёты/сервисы) |
Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`.
## Шаблоны ограничений (RLS)
Элементы массива `templates`:
| Поле | Тип | Описание |
|------|-----|----------|
| `name` | string | Имя шаблона с параметрами: `"ДляОбъекта(Модификатор)"` |
| `condition` | string | Текст условия. `&` экранируется в `&amp;` автоматически |
Ссылка на шаблон в `rls`: `"#ИмяШаблона(\"параметры\")"` — начинается с `#`.
## Русские синонимы
DSL принимает русские имена типов и прав, транслируя их в английские. Полные таблицы соответствий — в `.claude/skills/role-compile/dsl-reference.md`.
Примеры: `Справочник` → Catalog, `Документ` → Document, `Чтение` → Read, `Просмотр` → View.
## Пример
```json
{
"name": "МенеджерПродаж",
"synonym": "Менеджер продаж",
"objects": [
"Document.РеализацияТоваровУслуг: @edit",
"Catalog.Контрагенты: @view",
"Catalog.Номенклатура: @view",
{
"name": "Document.ЗаказКлиента",
"preset": "view",
"rls": { "Read": "#ДляОбъекта(\"\")" }
}
],
"templates": [
{
"name": "ДляОбъекта(Модификатор)",
"condition": "ГДЕ Организация = &ТекущаяОрганизация"
}
]
}
```
## Генерируемые файлы
```
Roles/
ИмяРоли.xml # Метаданные (UUID, синоним, флаги)
ИмяРоли/
└── Ext/
└── Rights.xml # Права доступа (объекты, права, RLS)
```
## См. также
- [Роли (Rights.xml)](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS
- [Гайд по ролям](role-guide.md) — сценарии использования, рабочий цикл