Remove @use preset, merge DataProcessor/Report into @view

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>
This commit is contained in:
Nick Shirokov
2026-02-10 13:18:08 +03:00
parent 8b8bc1225a
commit 7aaa9fc070
5 changed files with 19 additions and 32 deletions
+5 -3
View File
@@ -42,6 +42,7 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile
"objects": [
"Catalog.Номенклатура: @view",
"Document.Реализация: @edit",
"DataProcessor.Загрузка: @view",
"InformationRegister.Цены: Read, Update",
{ "name": "Document.Продажа", "preset": "view", "rights": {"Delete": false}, "rls": {"Read": "#Шаблон(\"\")"} }
]
@@ -54,12 +55,13 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile
| Пресет | Действие |
|--------|----------|
| `@view` | Просмотр — Read, View (+InputByString для справочников/документов) |
| `@view` | Просмотр — Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
| `@edit` | Полное редактирование — CRUD + Interactive* + Posting (документы) |
| `@use` | Использование — Use, View (обработки/отчёты/сервисы) |
`@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`.
Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`.
### Русские синонимы
Поддерживаются русские типы (`Справочник`→Catalog, `Документ`→Document) и права (`Чтение`→Read, `Просмотр`→View). Смешивание допустимо: `"Справочник.Контрагенты: Чтение, View"`.
@@ -79,7 +81,7 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile
```json
{
"name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры",
"objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @use"]
"objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @view"]
}
```
+6 -11
View File
@@ -39,7 +39,7 @@
"Catalog.Номенклатура: @view",
"Document.Реализация: @edit",
"InformationRegister.Цены: Read, Update",
"DataProcessor.Загрузка: @use"
"DataProcessor.Загрузка: @view"
]
```
@@ -54,7 +54,7 @@
}
```
- `preset` — базовый набор прав (`"view"`, `"edit"`, `"use"`)
- `preset` — базовый набор прав (`"view"`, `"edit"`)
- `rights` — переопределения: dict `{"Right": true/false}` или массив `["Right1", "Right2"]`
- `rls` — RLS-ограничения: `{"ИмяПрава": "текст условия"}`
@@ -70,6 +70,7 @@
| InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, Constant, DocumentJournal | Read, View |
| Sequence | Read |
| CommonForm, CommonCommand, Subsystem, FilterCriterion, CommonAttribute | View |
| DataProcessor, Report | Use, View |
| SessionParameter | Get |
| Configuration | ThinClient, WebClient, Output, SaveUserData, MainWindowModeNormal |
@@ -87,13 +88,7 @@
| SessionParameter | Get, Set |
| CommonAttribute | View, Edit |
### `@use` — использование
| Тип объекта | Права |
|-------------|-------|
| DataProcessor, Report | Use, View |
| CommonForm, CommonCommand, Subsystem | View |
| WebService, HTTPService, IntegrationService | Use |
Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`.
Если пресет не определён для типа объекта — предупреждение с подсказкой доступных.
@@ -241,7 +236,7 @@
"objects": [
"Catalog.Номенклатура: @view",
"Catalog.Контрагенты: @view",
"DataProcessor.Загрузка: @use"
"DataProcessor.Загрузка: @view"
]
}
```
@@ -296,7 +291,7 @@
"Справочник.Контрагенты: @view",
"Документ.Реализация: Чтение, Просмотр",
"РегистрСведений.Цены: @edit",
"Обработка.ЗагрузкаДанных: @use"
"Обработка.ЗагрузкаДанных: @view"
]
}
```
@@ -264,7 +264,7 @@ $script:knownRights = @{
$script:nestedRights = @("View","Edit")
$script:commandRights = @("View")
# --- 4. Presets (@view, @edit, @use) ---
# --- 4. Presets (@view, @edit) ---
$script:presets = @{
"view" = @{
@@ -289,6 +289,8 @@ $script:presets = @{
"FilterCriterion" = @("View")
"SessionParameter" = @("Get")
"CommonAttribute" = @("View")
"DataProcessor" = @("Use","View")
"Report" = @("Use","View")
"Configuration" = @("ThinClient","WebClient","Output","SaveUserData","MainWindowModeNormal")
}
"edit" = @{
@@ -309,16 +311,6 @@ $script:presets = @{
"SessionParameter" = @("Get","Set")
"CommonAttribute" = @("View","Edit")
}
"use" = @{
"DataProcessor" = @("Use","View")
"Report" = @("Use","View")
"CommonForm" = @("View")
"CommonCommand" = @("View")
"Subsystem" = @("View")
"WebService" = @("Use")
"HTTPService" = @("Use")
"IntegrationService" = @("Use")
}
}
# --- 5. Helpers ---
@@ -341,7 +333,7 @@ function Resolve-Preset {
$preset = $presetName.TrimStart('@')
if (-not $script:presets.ContainsKey($preset)) {
Write-Warning "Unknown preset '@$preset'. Known: @view, @edit, @use"
Write-Warning "Unknown preset '@$preset'. Known: @view, @edit"
return @()
}
+2 -3
View File
@@ -37,7 +37,7 @@ Role JSON DSL — компактный JSON-формат, транслируем
| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|----------|
| `name` | string | да | Полное имя объекта: `Тип.Имя` |
| `preset` | string | нет | Пресет: `"view"`, `"edit"`, `"use"` (без `@`) |
| `preset` | string | нет | Пресет: `"view"`, `"edit"` (без `@`) |
| `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` |
| `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` |
@@ -49,9 +49,8 @@ Role JSON DSL — компактный JSON-формат, транслируем
| Пресет | Назначение |
|--------|------------|
| `view` | Просмотр: Read, View (+InputByString для справочников/документов) |
| `view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
| `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) |
| `use` | Использование: Use, View (обработки/отчёты/сервисы) |
Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`.
+2 -3
View File
@@ -35,7 +35,7 @@
"objects": [
"Catalog.Номенклатура: @view",
"Catalog.Контрагенты: @view",
"DataProcessor.Загрузка: @use"
"DataProcessor.Загрузка: @view"
]
}
```
@@ -59,9 +59,8 @@
| Пресет | Действие |
|--------|----------|
| `@view` | Просмотр: Read, View, InputByString (для справочников/документов); Read, View (для регистров) |
| `@view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
| `@edit` | Полное редактирование: CRUD + Interactive* + Posting (для документов) |
| `@use` | Использование: Use, View (для обработок/отчётов/сервисов) |
`@` обязателен в строковом shorthand. В объектной форме — ключ `preset` без `@`.