mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-14 23:39:02 +03:00
fix(role-compile,role-validate): закрытый белый список типов и прав вместо предупреждений
Неизвестный тип объекта обрабатывался веткой «warning» и всё равно попадал в Rights.xml: и генератор, и валидатор рапортовали успех. Блок прав на тип, который прав не имеет, платформа не отвергает — конфигурация с правами на перечисление не загружается в информационную базу, конфигуратор зависает без сообщений. Белый список — дерево редактора ролей: 27 типов (добавлен ExternalDataSource, которого не было ни в одной таблице) плюс таблица видов вложенности с наборами прав и привязкой вида к типу-родителю. Значения сняты с корпуса (acc/erp/ut/unf, ~2750 ролей) и с выгрузок роли со всеми проставленными правами — для внешнего источника данных и перерасчёта регистра расчёта, которых в корпусе нет. - role-compile: отказ ДО записи файлов, все причины разом, exit 1; ни файлов роли, ни записи в Configuration.xml. Русские алиасы для типов без прав — ради внятного отказа, а не ради генерации. - role-validate: те же случаи — ошибка вместо предупреждения. - Побочно снято 424 ложных предупреждения на корпусе: права Use у операций веб-сервисов и методов HTTP-сервисов считались недопустимыми для вложенных объектов. - Проверка имён прав и вложенных путей больше не пропускает мусор: неизвестное право и путь вида Enum.Х.Attribute.Y раньше не проверялись вовсе. - docs/1c-role-spec.md: ExternalDataSource ошибочно числился типом без прав. - dsl-reference.md переписан под «что можно написать» (тип → права, виды вложенности) вместо таблиц прощающего ввода. Тесты: expect.filesAbsent в раннере; новые кейсы на отказ и на вложенные объекты. Починены кейсы, которые ничего не проверяли: три задавали права одной строкой "Read View" (навык писал в эталон несуществующее право), valid-role собирал роль неизвестным ключом и валидировал пустую, bad-root проходил на «файл не найден». Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
30c8901615
commit
9b0bff1386
+46
-7
@@ -542,18 +542,44 @@ Subsystem.Администрирование.Subsystem.Пользователи
|
||||
| `SessionParameter` | Get, Set |
|
||||
| `CommonAttribute` | View, Edit |
|
||||
|
||||
#### ExternalDataSource
|
||||
|
||||
Источник ошибки в прежних редакциях спецификации: внешние источники данных права **имеют** —
|
||||
узел «Внешние источники данных» есть в дереве редактора ролей. Значения ниже сняты с выгрузки
|
||||
роли со всеми проставленными правами (8.3.25).
|
||||
|
||||
| Объект | Права |
|
||||
|--------|-------|
|
||||
| `ExternalDataSource.И` | Use, Administration, StandardAuthenticationChange, SessionStandardAuthenticationChange, SessionOSAuthenticationChange |
|
||||
| `ExternalDataSource.И.Table.Т` | Read, Insert, Update, Delete, View, Edit, InputByString, InteractiveInsert, InteractiveDelete |
|
||||
| `ExternalDataSource.И.Table.Т.Field.П` | View, Edit |
|
||||
| `ExternalDataSource.И.Cube.К` | Read, View |
|
||||
| `ExternalDataSource.И.Cube.К.Dimension.И` | View |
|
||||
| `ExternalDataSource.И.Cube.К.Resource.Р` | View |
|
||||
| `ExternalDataSource.И.Cube.К.DimensionTable.Т` | Read, View |
|
||||
| `ExternalDataSource.И.Cube.К.DimensionTable.Т.Field.П` | View, Edit |
|
||||
| `ExternalDataSource.И.Function.Ф` | Use, View |
|
||||
| `…Table.Т.Command.К`, `…Cube.К.Command.К`, `…DimensionTable.Т.Command.К` | View |
|
||||
|
||||
#### Типы объектов БЕЗ прав в ролях
|
||||
|
||||
Следующие типы не фигурируют в Rights.xml (права не применимы или управляются иначе):
|
||||
Следующие типы не фигурируют в Rights.xml — в дереве редактора ролей их нет:
|
||||
|
||||
- `Enum` (перечисления)
|
||||
- `FunctionalOption`
|
||||
- `DefinedType`
|
||||
- `Enum` (перечисления) — блок прав на перечисление приводит к зависанию загрузки
|
||||
конфигурации в информационную базу: конфигуратор не завершается и не выдаёт сообщений
|
||||
- `CommonModule`
|
||||
- `DefinedType`
|
||||
- `CommonPicture`
|
||||
- `CommonTemplate`
|
||||
- `Language`
|
||||
- `FunctionalOption`, `FunctionalOptionsParameter`
|
||||
- `EventSubscription`
|
||||
- `ScheduledJob`
|
||||
- `StyleItem`, `Style`
|
||||
- `SettingsStorage`
|
||||
- `ExternalDataSource`
|
||||
- `XDTOPackage`
|
||||
- `WSReference`
|
||||
- `DocumentNumerator`
|
||||
|
||||
---
|
||||
|
||||
@@ -646,8 +672,21 @@ Subsystem.Администрирование.Subsystem.Пользователи
|
||||
| `TabularSection.*.Attribute` | (все с TabularSection) | View, Edit |
|
||||
| `Dimension` | InformationRegister, AccumulationRegister, AccountingRegister | View, Edit |
|
||||
| `Resource` | InformationRegister, AccumulationRegister, AccountingRegister | View, Edit |
|
||||
| `Command` | Catalog, Document, DataProcessor, Report, *Register, DocumentJournal, ExchangePlan, BusinessProcess, Task | View |
|
||||
| `AddressingAttribute` | Task | View, Edit |
|
||||
| `Command` | Catalog, Document, DataProcessor, Report, *Register, DocumentJournal, ExchangePlan, BusinessProcess, Task, ExternalDataSource (Table/Cube/DimensionTable) | View |
|
||||
| `AddressingAttribute` | Task, BusinessProcess | View, Edit |
|
||||
| `StandardTabularSection` | Catalog, Document, ChartOf* | View, Edit |
|
||||
| `AccountingFlag`, `ExtDimensionAccountingFlag` | ChartOfAccounts | View, Edit |
|
||||
| `Subsystem` | Subsystem (вложенная) | View |
|
||||
| `Operation` | WebService | Use |
|
||||
| `URLTemplate.*.Method` | HTTPService | Use |
|
||||
| `IntegrationServiceChannel` | IntegrationService | Use |
|
||||
| `Recalculation` | CalculationRegister | Read, Update |
|
||||
| `Column` (графа журнала) | — | прав не имеет |
|
||||
| `Table`, `Cube`, `Function`, `Field`, `DimensionTable` | только ExternalDataSource | см. раздел ExternalDataSource |
|
||||
|
||||
Виды, встречающиеся в выгрузках типовых конфигураций, сверены с корпусом
|
||||
(`acc`, `erp`, `ut`, `unf` — ~2750 ролей); внешние источники данных — с выгрузкой роли,
|
||||
где права проставлены по всему дереву.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user