mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
7aaa9fc070
The @use preset name conflicted with the Use right semantics. DataProcessor and Report require Use+View together (View cannot be set without Use), so @view is the natural fit. Services (WebService, HTTPService, IntegrationService) use explicit rights. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
113 lines
5.3 KiB
Markdown
113 lines
5.3 KiB
Markdown
# Спецификация 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"` (без `@`) |
|
||
| `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` |
|
||
| `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` |
|
||
|
||
При наличии `preset` + `rights` — сначала применяется пресет, затем `rights` переопределяют отдельные права.
|
||
|
||
## Пресеты
|
||
|
||
Три встроенных пресета определяют набор прав в зависимости от типа объекта:
|
||
|
||
| Пресет | Назначение |
|
||
|--------|------------|
|
||
| `view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
|
||
| `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) |
|
||
|
||
Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`.
|
||
|
||
## Шаблоны ограничений (RLS)
|
||
|
||
Элементы массива `templates`:
|
||
|
||
| Поле | Тип | Описание |
|
||
|------|-----|----------|
|
||
| `name` | string | Имя шаблона с параметрами: `"ДляОбъекта(Модификатор)"` |
|
||
| `condition` | string | Текст условия. `&` экранируется в `&` автоматически |
|
||
|
||
Ссылка на шаблон в `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) — сценарии использования, рабочий цикл
|