mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-17 15:25:23 +03:00
126 lines
7.7 KiB
Markdown
126 lines
7.7 KiB
Markdown
---
|
|
name: role-edit
|
|
description: Точечное редактирование существующей роли 1С. Используй когда нужно добавить, снять или запретить права, настроить RLS-ограничения и шаблоны, изменить свойства роли без потери прочих прав и UUID
|
|
argument-hint: <RolePath> -Operation <op> -Value "<val>" | -DefinitionFile <json> [-NoValidate]
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- Write
|
|
- Glob
|
|
---
|
|
|
|
# /role-edit — точечное редактирование роли 1С
|
|
|
|
Меняет права существующей роли на месте: UUID, прочие права, RLS и шаблоны сохраняются.
|
|
Создание новой роли — `/role-compile`.
|
|
|
|
## Параметры и команда
|
|
|
|
| Параметр | Описание |
|
|
|----------|----------|
|
|
| `RolePath` | Каталог роли, `Roles/Имя.xml` или `Roles/Имя/Ext/Rights.xml` |
|
|
| `Operation` | Одна операция из таблицы ниже |
|
|
| `Value` | Значение операции; несколько значений — через `;;` |
|
|
| `DefinitionFile` | JSON-массив операций (альтернатива `Operation`) — так задают несколько разных операций |
|
|
| `NoValidate` | Не запускать `role-validate` после правки |
|
|
|
|
```powershell
|
|
python ".codeassistant/skills/role-edit/scripts/role-edit.py" -RolePath "<роль>" -Operation <op> -Value "<значение>"
|
|
```
|
|
|
|
Операции применяются в том порядке, в котором перечислены.
|
|
|
|
## Операции
|
|
|
|
| Операция | Формат `Value` | Описание |
|
|
|----------|----------------|----------|
|
|
| `add-rights` | `Тип.Имя: Право1, Право2` или `Тип.Имя: @пресет` | Добавить права, прежние сохранить |
|
|
| `set-rights` | то же | Заменить набор прав объекта целиком |
|
|
| `remove-rights` | `Тип.Имя: Право1, Право2` — снять права<br>`Тип.Имя` — удалить объект целиком | Снять права |
|
|
| `deny-rights` | `Тип.Имя: Право1, Право2` | Закрыть реквизит или ТЧ, которые иначе наследуют права объекта |
|
|
| `set-rls` | `Тип.Имя.Право: условие`<br>`Тип.Имя.Право[Поле1, Поле2]: условие` | Ограничение доступа к данным |
|
|
| `remove-rls` | `Тип.Имя.Право` — снять все<br>`Тип.Имя.Право[Поле1]` — снять одну строку | Снять ограничение, право оставить |
|
|
| `add-template` | `Имя(Параметры): условие` | Добавить шаблон ограничения |
|
|
| `set-template` | то же | Заменить шаблон, а если его нет — добавить |
|
|
| `remove-template` | `Имя(Параметры)` или `Имя` | Удалить шаблон |
|
|
| `modify-property` | `setForNewObjects=true`<br>`setForAttributesByDefault=false`<br>`independentRightsOfChildObjects=true` | Глобальные флаги роли |
|
|
| `set-synonym` | текст | Синоним роли |
|
|
| `set-comment` | текст | Комментарий роли |
|
|
|
|
## Быстрые примеры
|
|
|
|
```powershell
|
|
# Добавить права нового регистра, ничего не потеряв
|
|
... -RolePath "src/Roles/Менеджер" -Operation add-rights -Value "InformationRegister.Цены: Read, Update"
|
|
|
|
# Пресет и несколько объектов в одном вызове
|
|
... -RolePath "src/Roles/Менеджер" -Operation add-rights -Value "Catalog.Товары: @view ;; Document.Заказ: @edit"
|
|
|
|
# Снять права; объект без разрешающих прав удаляется целиком
|
|
... -RolePath "src/Roles/Менеджер" -Operation remove-rights -Value "Document.Заказ: Delete"
|
|
|
|
# Закрыть реквизит от роли
|
|
... -RolePath "src/Roles/Менеджер" -Operation deny-rights -Value "Catalog.Товары.Attribute.Цена: View"
|
|
```
|
|
|
|
Несколько разных операций — списком в файле:
|
|
|
|
```json
|
|
[
|
|
{ "operation": "add-rights", "value": "Catalog.Товары: @view" },
|
|
{ "operation": "set-rls", "value": "Catalog.Товары.Read: #ПоОрганизации(\"\")" }
|
|
]
|
|
```
|
|
|
|
```powershell
|
|
... -RolePath "src/Roles/Менеджер" -DefinitionFile "операции.json"
|
|
```
|
|
|
|
## Права
|
|
|
|
Имена объектов и прав — те же, что в `/role-compile`: `Catalog`, `Read`, пресеты `@view` и
|
|
`@edit`, вложенные пути (`Catalog.Контрагенты.Attribute.ИНН: View, Edit`), короткая запись сервиса
|
|
(`HTTPService.ЭДО: Use` раскрывается по всем методам шаблонов URL).
|
|
|
|
`remove-rights` и `deny-rights` задевают больше перечисленного: уходят и права, которым снятое
|
|
нужно (сняли `Read` — уйдут `Update`, `View`, `Edit`). Снятое каскадом перечисляется в выводе.
|
|
|
|
Ошибка в значении — отказ до записи, файл не меняется. Полные таблицы «тип → права» и виды
|
|
вложенности — в справке `/role-compile`.
|
|
|
|
## RLS
|
|
|
|
Ограничения права — это список строк, как в таблице «Ограничения доступа к данным» редактора.
|
|
Строка без списка полей действует на все прочие поля, строка со списком — только на них.
|
|
Типовой приём: закрыть данные целиком, но оставить поля представления ссылки открытыми, иначе
|
|
ссылки на объект превратятся в «объект не найден»:
|
|
|
|
```powershell
|
|
... -Operation set-rls -Value "Catalog.Товары.Read: ГДЕ ЛОЖЬ"
|
|
... -Operation set-rls -Value "Catalog.Товары.Read[Ссылка, Код, Наименование]: "
|
|
```
|
|
|
|
Строка с тем же набором полей заменяется, с другим — добавляется. Право должно быть уже выдано:
|
|
ограничение без права платформа игнорирует, поэтому навык откажет.
|
|
|
|
Ссылка на шаблон — `#ИмяШаблона("")`; `&` в условиях экранируется автоматически.
|
|
|
|
## Значение из файла
|
|
|
|
Вместо текста можно указать `@путь` — условие RLS, тело шаблона, синоним и комментарий берутся из
|
|
файла. Относительный путь ищется рядом с `DefinitionFile`, затем в текущем каталоге. Разделитель
|
|
`;;` внутри файла остаётся обычным текстом.
|
|
|
|
```powershell
|
|
... -Operation set-rls -Value "Catalog.Товары.Read: @условие.txt"
|
|
... -Operation add-template -Value "ПоОрганизации(Мод): @условие.txt"
|
|
... -Operation set-comment -Value "@комментарий.txt"
|
|
```
|
|
|
|
## Верификация
|
|
|
|
```
|
|
/role-info <RightsPath> — сводка прав после правки
|
|
/role-validate <RightsPath> — проверка корректности (запускается автоматически)
|
|
```
|