mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-17 23:35:22 +03:00
Auto-build: codeassistant (powershell) from e2c7f38
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
---
|
||||
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
|
||||
powershell.exe -NoProfile -File ".codeassistant/skills/role-edit/scripts/role-edit.ps1" -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> — проверка корректности (запускается автоматически)
|
||||
```
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user