mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 08:04:56 +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>
156 lines
6.7 KiB
Markdown
156 lines
6.7 KiB
Markdown
# Роли (Role)
|
|
|
|
Навыки группы `/role-*` позволяют анализировать, создавать и проверять роли 1С — XML-файлы прав доступа (Rights.xml) и метаданных.
|
|
|
|
## Навыки
|
|
|
|
| Навык | Параметры | Описание |
|
|
|-------|-----------|----------|
|
|
| `/role-info` | `<RightsPath>` | Компактная сводка прав: объекты по типам, только разрешённые, RLS, шаблоны |
|
|
| `/role-compile` | `<JsonPath> <RolesDir>` | Генерация роли из JSON DSL: метаданные + Rights.xml, UUID автоматически |
|
|
| `/role-validate` | `<RightsPath> [MetadataPath]` | Валидация структурной корректности: XML, namespace, права, RLS, шаблоны |
|
|
|
|
## Рабочий цикл
|
|
|
|
```
|
|
Описание прав (текст) → JSON DSL → /role-compile → XML-исходники → /role-validate
|
|
→ /role-info
|
|
```
|
|
|
|
1. Claude формирует JSON-определение роли (с пресетами или явными правами)
|
|
2. `/role-compile` генерирует `Roles/ИмяРоли.xml` + `Roles/ИмяРоли/Ext/Rights.xml`
|
|
3. `/role-validate` проверяет корректность сгенерированного XML
|
|
4. `/role-info` выводит компактную сводку для визуальной проверки
|
|
|
|
## JSON DSL — компактный формат
|
|
|
|
Роли описываются в JSON с двумя уровнями детализации:
|
|
|
|
### Строковый shorthand (простые роли)
|
|
|
|
```json
|
|
{
|
|
"name": "ЧтениеНоменклатуры",
|
|
"synonym": "Чтение номенклатуры",
|
|
"objects": [
|
|
"Catalog.Номенклатура: @view",
|
|
"Catalog.Контрагенты: @view",
|
|
"DataProcessor.Загрузка: @view"
|
|
]
|
|
}
|
|
```
|
|
|
|
Формат строки: `Тип.Имя: @пресет` или `Тип.Имя: Право1, Право2`.
|
|
|
|
### Объектная форма (RLS, переопределения)
|
|
|
|
```json
|
|
{
|
|
"name": "Document.Реализация",
|
|
"preset": "view",
|
|
"rights": { "Delete": false },
|
|
"rls": { "Read": "#ДляОбъекта(\"\")" }
|
|
}
|
|
```
|
|
|
|
Форматы можно смешивать в одном массиве `objects`.
|
|
|
|
### Пресеты
|
|
|
|
| Пресет | Действие |
|
|
|--------|----------|
|
|
| `@view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) |
|
|
| `@edit` | Полное редактирование: CRUD + Interactive* + Posting (для документов) |
|
|
|
|
`@` обязателен в строковом shorthand. В объектной форме — ключ `preset` без `@`.
|
|
|
|
### Русские синонимы
|
|
|
|
Скрипт принимает русские имена типов и прав: `Справочник` → Catalog, `Чтение` → Read, `Проведение` → Posting и т.д. Полный список — в [спецификации Role DSL](role-dsl-spec.md).
|
|
|
|
## Сценарии использования
|
|
|
|
### Анализ существующей роли
|
|
|
|
```
|
|
> Проанализируй права роли Roles/БазовыеПраваБП/Ext/Rights.xml
|
|
```
|
|
|
|
Claude вызовет `/role-info`, получит компактную сводку (тысячи строк XML → 50–300 строк текста) и опишет:
|
|
- какие объекты доступны и с какими правами
|
|
- где есть ограничения RLS
|
|
- какие шаблоны ограничений используются
|
|
|
|
### Создание роли по описанию
|
|
|
|
```
|
|
> Создай роль МенеджерПродаж с правами:
|
|
> - Документ РеализацияТоваровУслуг: полные права
|
|
> - Справочник Контрагенты: чтение
|
|
> - Справочник Номенклатура: чтение
|
|
> - Регистр ЦеныНоменклатуры: чтение
|
|
```
|
|
|
|
Claude сформирует JSON с пресетами:
|
|
```json
|
|
{
|
|
"name": "МенеджерПродаж",
|
|
"synonym": "Менеджер продаж",
|
|
"objects": [
|
|
"Document.РеализацияТоваровУслуг: @edit",
|
|
"Catalog.Контрагенты: @view",
|
|
"Catalog.Номенклатура: @view",
|
|
"InformationRegister.ЦеныНоменклатуры: @view"
|
|
]
|
|
}
|
|
```
|
|
|
|
И вызовет `/role-compile` → `/role-validate` → `/role-info`.
|
|
|
|
### Создание роли для регламентного задания
|
|
|
|
```
|
|
> Проанализируй модуль регламентного задания ОбновлениеКурсовВалют
|
|
> и создай роль с минимальными правами для его выполнения
|
|
```
|
|
|
|
Claude проанализирует код, определит используемые объекты, создаст JSON с точечными правами (без пресетов — только нужные права), и скомпилирует роль.
|
|
|
|
### Создание роли с RLS
|
|
|
|
```
|
|
> Создай роль для чтения документов с ограничением по организации
|
|
```
|
|
|
|
Claude использует объектную форму JSON с шаблонами ограничений.
|
|
|
|
### Проверка существующей роли
|
|
|
|
```
|
|
> Проверь корректность роли Roles/МояРоль/Ext/Rights.xml
|
|
```
|
|
|
|
Claude вызовет `/role-validate` и покажет результат: ошибки (невалидный XML, отсутствующие элементы) и предупреждения (неизвестные типы объектов, подозрительные имена прав с подсказками).
|
|
|
|
## Структура файлов роли
|
|
|
|
```
|
|
Roles/
|
|
├── ИмяРоли.xml # Метаданные (UUID, синоним)
|
|
└── ИмяРоли/
|
|
└── Ext/
|
|
└── Rights.xml # Права доступа
|
|
```
|
|
|
|
Регистрация в `Configuration.xml`:
|
|
```xml
|
|
<ChildObjects>
|
|
<Role>ИмяРоли</Role>
|
|
</ChildObjects>
|
|
```
|
|
|
|
## Спецификация
|
|
|
|
- [1c-role-spec.md](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS, шаблоны ограничений
|
|
- [role-dsl-spec.md](role-dsl-spec.md) — JSON DSL для описания ролей (формат входных данных `/role-compile`)
|