mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-20 10:09:42 +03:00
Неизвестный тип объекта обрабатывался веткой «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>
26 lines
1.1 KiB
JSON
26 lines
1.1 KiB
JSON
{
|
|
"name": "Позитив: операции сервисов, вложенные объекты и внешний источник данных",
|
|
"input": {
|
|
"name": "Интеграция",
|
|
"synonym": "Интеграция",
|
|
"objects": [
|
|
"WebService.Обмен.Operation.Загрузить: Use",
|
|
"HTTPService.ПередачаДанных.URLTemplate.Файлы.Method.get: Use",
|
|
"IntegrationService.Канал.IntegrationServiceChannel.Основной: Use",
|
|
"Catalog.Товары.Attribute.Цена: View, Edit",
|
|
"Subsystem.Продажи.Subsystem.Опт: View",
|
|
"CalculationRegister.Начисления.Recalculation.Перерасчет: Read, Update",
|
|
"ExternalDataSource.Источник: Use, Administration",
|
|
"ExternalDataSource.Источник.Table.Заказы: Read, View",
|
|
"ExternalDataSource.Источник.Table.Заказы.Field.Сумма: View, Edit",
|
|
"ExternalDataSource.Источник.Cube.Продажи.Dimension.Период: View"
|
|
]
|
|
},
|
|
"expect": {
|
|
"files": [
|
|
"Roles/Интеграция/Ext/Rights.xml"
|
|
]
|
|
},
|
|
"skipValidation": true
|
|
}
|