fix(role-compile): права на сервис — на вложенных объектах, а не на корне

Короткая запись `HTTPService.X: Use` писала узел, которого платформа не видит:
роль проходила role-validate и cfe-validate, а маршруты отвечали 403. В корпусе
(acc/erp/ut/unf, 907 записей прав на сервисы) корневого узла нет ни разу — право
живёт на методе шаблона URL, операции, канале; в Конфигураторе галки на корне нет.

Короткая запись теперь раскрывается во все вложенные объекты сервиса по его
метаданным в OutputDir. Заимствованный сервис несёт заимствованные шаблоны и
методы, поэтому раскрытие даёт ровно тот набор, на который права дать можно.
Нет метаданных или вложенных объектов — отказ с подсказкой формата.

Плюс отказ, когда основная роль расширения (из DefaultRoles) даёт права на
заимствованный сервис: платформа такое расширение не принимает.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-17 16:19:43 +03:00
co-authored by Claude Opus 5
parent 4967b752d7
commit 756bd857dd
4 changed files with 333 additions and 12 deletions
+8 -3
View File
@@ -22,7 +22,7 @@
| `DocumentJournal` | Read, View |
| `Sequence` | Read, Update |
| `DataProcessor`, `Report` | Use, View |
| `WebService`, `HTTPService`, `IntegrationService` | Use |
| `WebService`, `HTTPService`, `IntegrationService` | — права только на вложенных объектах, см. ниже |
| `CommonForm`, `CommonCommand`, `Subsystem`, `FilterCriterion` | View |
| `CommonAttribute` | View, Edit |
| `SessionParameter` | Get, Set |
@@ -50,7 +50,12 @@
Примеры: `Catalog.Контрагенты.Attribute.ИНН: View, Edit`,
`Document.Реализация.TabularSection.Товары.Attribute.Цена: View`,
`WebService.Обмен.Operation.Загрузить: Use`,
`HTTPService.API.URLTemplate.Файлы.Method.get: Use`.
`HTTPService.API.URLTemplate.Файлы.Method.Получить: Use`.
Сегмент после `Method.`**имя объекта Method в дереве метаданных**, а не HTTP-глагол:
встречаются и `Method.GET`, и `Method.Установить`, и `Method.СоздатьПодключение`.
Про короткую запись `HTTPService.API: Use` — раздел «Сервисы» в `SKILL.md`.
### Вложенные объекты внешнего источника данных
@@ -129,7 +134,7 @@
| CommonAttribute | View, Edit |
Для сервисов (WebService, HTTPService, IntegrationService) и внешних источников данных
пресеты не определены — задавай права явно: `"WebService.Имя: Use"`.
пресеты не определены — задавай права явно: `"WebService.Обмен.Operation.Загрузить: Use"`.
## Шаблоны ограничений (RLS templates)