Типизированно изменить права существующей роли 1С по логическому адресу, сохранив RLS, шаблоны и остальные права.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add IngvarConsulting/unica --skill role-edit --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Role Edit?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ingvarconsulting-role-edit)More formats (shields.io, HTML) on the badges page.
---
name: role-edit
description: Типизированно изменить права существующей роли 1С по логическому адресу, сохранив RLS, шаблоны и остальные права.
argument-hint: <sourceSet> <metadataPath> <operations>
allowed-tools:
- Read
- Glob
---
# /unica:role-edit — точечное редактирование прав роли
## MCP routing
- Preferred path: use MCP `unica` tool `unica.role.edit`.
- Выбирайте роль только через `sourceSet + metadataPath` вида `Role.<Имя>`.
Физический `Rights.xml` — внутренняя деталь разрешителя.
- Передавайте непустой упорядоченный массив `operations`; сейчас его закрытый
вариант — `setRight` с `objectName`, `right` и булевым `value`.
- Вызов по умолчанию строит preview. Передавайте `dryRun: false` только когда
пользователь явно попросил применить изменение.
- Читайте `metadataPath`, `changed`, `effects` по `operationIndex`,
`validation` и `diagnostics` из `structuredContent.data`. `stdout`, diff и
физический путь не являются контрактом результата.
- Не передавайте снятые top-level поля `RightsPath`, `Path`, `ObjectName`,
`Name` и `Value`; schema и parser обязаны их отклонить.
- `sourceSet` — имя набора исходников из `v8project.yaml`, а не константа.
Получите его через `unica.view {}`; `"main"` ниже — только пример.
## Вызов
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.role.edit",
"arguments": {
"sourceSet": "main",
"metadataPath": "Role.Демо",
"operations": [
{
"op": "setRight",
"objectName": "Catalog.Демо",
"right": "Delete",
"value": false
}
],
"dryRun": true
}
}
}
```
Операции выполняются последовательно и публикуются одной транзакцией. Writer
проверяет право для вида `objectName` до изменения XML, сохраняет RLS,
templates, глобальные флаги, остальные объектные блоки и права. Повтор
эквивалентной операции даёт `changed: false` без записи.
Платформа хранит объектное право только со значением, отличным от умолчания
роли `setForNewObjects`. Поэтому `setRight` со значением умолчания (обычно
`false`) удаляет элемент права вместе с его RLS, а опустевший объектный блок —
целиком; если право уже отсутствует или объект не перечислен в роли, это
законный no-op. Право со значением, отличным от умолчания, записывается явно.
Ограничения, о которых стоит помнить:
- Writer не создаёт отсутствующий блок `object`: выдать роли право на объект,
который в `Rights.xml` ещё не настроен, нельзя — вызов отвечает
`object_not_listed`. Сначала перечислите объект в роли Конфигуратором или
`unica.role.compile`.
- Writer не моделирует зависимости прав платформы (например, «ввод по строке»
требует «просмотра»). Состояние, нарушающее матрицу зависимостей, платформа
молча дополнит при импорте — следите за парными правами сами.
Для `DataProcessor.*` операция `Use=false` применяет правило платформы:
удаляется весь объектный блок вместе с содержащимся в нём зависимым правом
`View`. Это не обобщается на другие виды объектов или права. Неподдерживаемое
сочетание завершается диагностикой без частичной мутации.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!