mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-18 23:55:53 +03:00
Закрывает #43. Повторный role-compile перевыпускал UUID и переписывал Rights.xml целиком, поэтому добавить права существующей роли было нечем — оставалась ручная правка XML. Операции: add-rights, set-rights, remove-rights, deny-rights, set-rls, remove-rls, add/set/remove-template, modify-property, set-synonym, set-comment. Пакет через ;;, значение из файла через @путь, отказ до записи со всеми причинами разом, авто-вызов role-validate. Грамматика имён и пресетов — та же, что у role-compile: копии таблиц и валидаторов взяты побайтово, навык дописан в 16 семей реестра check-inline-drift. Правка держит инвариант «меняется только то, что просили»: узел встаёт на своё место по uuid объекта, право — по канону типа, набор замыкается по зависимостям, снятие и запрет идут каскадом в обратную сторону. Проверено раундтрипом через платформу — выход обоих портов совпал с выгрузкой 1С байт в байт, включая RLS с полями и двумя строками ограничений. 22 кейса на обоих портах, 17 снэпшотов приняты платформой. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
23 lines
530 B
JSON
23 lines
530 B
JSON
{
|
|
"name": "Запрет права на реквизит с каскадом запретов",
|
|
"setup": "fixture:role-base",
|
|
"params": {
|
|
"rolePath": "Roles/Менеджер"
|
|
},
|
|
"input": [
|
|
{
|
|
"operation": "deny-rights",
|
|
"value": "Catalog.Товары.Attribute.Цена: View"
|
|
}
|
|
],
|
|
"expect": {
|
|
"stdoutContains": [
|
|
"запрещено — View, Edit"
|
|
],
|
|
"fileContains": {
|
|
"file": "Roles/Менеджер/Ext/Rights.xml",
|
|
"text": "<value>false</value>"
|
|
}
|
|
}
|
|
}
|