fix(role-edit): операции применяются в порядке ввода

Внутри навыка они были сгруппированы по типам, поэтому список
[remove-rights, add-rights] для одного права выполнялся наоборот: право
сначала добавлялось, потом снималось. В инструкции об этом не было ни
слова, а порядок ввода — то, чего ожидает читающий.

Заодно: условие RLS со ссылкой на шаблон, которого в роли нет, больше не
проходит молча — предупреждение в stderr (отказывать нельзя, шаблон
могут добавить следующей операцией).

Вычитка инструкций обоих навыков: сказано, что -Operation это одна
операция, а несколько разных задают списком в файле (с примером);
перечислены все три глобальных флага; про значение из файла вынесено в
свой раздел; добавлено, что права реквизитам поштучно платформа не
хранит — ограничивают их запретом. Из role-compile убрано объяснение,
зачем навык замыкает набор: инструкция про применение.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
This commit is contained in:
Nick Shirokov
2026-09-13 18:47:47 +03:00
co-authored by Claude Opus 5
parent d425833709
commit b28c044e06
4 changed files with 97 additions and 60 deletions
+6 -2
View File
@@ -63,8 +63,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -
### Зависимые права
Набор прав дополняется до замыкания: `Edit` тянет `Read`, `Update`, `View`; интерактивные права —
свой базовый набор; `View` у обработки и отчёта — `Use`. Дописанное перечисляется в выводе. Так же
поступает сама платформа при загрузке, поэтому без этого файл роли и база расходятся.
свой базовый набор; `View` у обработки и отчёта — `Use`. Дописанное перечисляется в выводе.
### Сервисы
@@ -130,6 +129,11 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -
Права на части объекта задаются точечным путём: `Catalog.Контрагенты.Attribute.ИНН: View, Edit`, `WebService.Обмен.Operation.Загрузить: Use`, `HTTPService.ЭДО.URLTemplate.ЕстьНовыеДокументы.Method.POST: Use`.
Реквизиты, табличные части, измерения и ресурсы по умолчанию наследуют права своего объекта:
выдавать их отдельно бессмысленно, платформа такую запись не сохранит. Поштучные права на них
имеют смысл только при `"setForAttributesByDefault": false`; ограничить реквизит в обычной роли
можно запретом — `{"name": "Catalog.Товары.Attribute.Цена", "rights": {"View": false}}`.
Роль расширения, включённая в основные (`DefaultRoles`), прав на заимствованные объекты давать не может — платформа это запрещает. Такие права выноси в отдельную роль вне основных.
Полные таблицы «тип → права», виды вложенности (включая внешние источники данных), список типов без прав, таблицы пресетов и дополнительные примеры — в `dsl-reference.md`.