Auto-build: codeassistant (python) from e2c7f38

This commit is contained in:
github-actions[bot]
2026-09-14 10:19:47 +00:00
commit a5eed532b7
347 changed files with 200698 additions and 0 deletions
+125
View File
@@ -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
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> — проверка корректности (запускается автоматически)
```