mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-19 08:05:53 +03:00
feat(role-edit): точечная правка существующей роли
Закрывает #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
This commit is contained in:
co-authored by
Claude Opus 5
parent
ce37fe6e53
commit
7bbacd8ef4
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "Отказ: право не существует у типа",
|
||||
"setup": "fixture:role-base",
|
||||
"params": {
|
||||
"rolePath": "Roles/Менеджер"
|
||||
},
|
||||
"input": [
|
||||
{
|
||||
"operation": "add-rights",
|
||||
"value": "InformationRegister.Цены: Insert"
|
||||
}
|
||||
],
|
||||
"expect": {
|
||||
"stderrContains": [
|
||||
"не существует у типа"
|
||||
]
|
||||
},
|
||||
"expectError": true,
|
||||
"noSnapshot": "отказ до записи — рабочий каталог равен фикстуре"
|
||||
}
|
||||
Reference in New Issue
Block a user