# Спецификация Role JSON DSL Формат JSON для описания ролей 1С, используемый навыком `/role-compile`. ## Обзор Role JSON DSL — компактный JSON-формат, транслируемый скриптом в XML-файлы роли 1С:Предприятия (метаданные + Rights.xml). Поддерживает пресеты прав, русские синонимы типов и прав, шаблоны ограничений (RLS). ## Корневой объект | Поле | Тип | Обяз. | По умолчанию | Описание | |------|-----|:-----:|:------------:|----------| | `name` | string | да | — | Программное имя роли | | `synonym` | string | нет | = name | Отображаемое имя | | `comment` | string | нет | `""` | Комментарий | | `setForNewObjects` | bool | нет | `false` | Устанавливать для новых объектов | | `setForAttributesByDefault` | bool | нет | `true` | Устанавливать для реквизитов по умолчанию | | `independentRightsOfChildObjects` | bool | нет | `false` | Независимые права подчинённых объектов | | `objects` | array | нет | `[]` | Массив объектов метаданных с правами | | `templates` | array | нет | `[]` | Шаблоны ограничений (RLS) | ## Элементы `objects` Массив принимает два формата, которые можно смешивать. ### Строковый shorthand ``` "Тип.Имя: @пресет" "Тип.Имя: Право1, Право2" ``` Тип — английский (Catalog) или русский (Справочник). Права — английские (Read) или русские (Чтение). ### Объектная форма | Поле | Тип | Обяз. | Описание | |------|-----|:-----:|----------| | `name` | string | да | Полное имя объекта: `Тип.Имя` | | `preset` | string | нет | Пресет: `"view"`, `"edit"` (без `@`) | | `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` | | `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` | При наличии `preset` + `rights` — сначала применяется пресет, затем `rights` переопределяют отдельные права. ## Пресеты Три встроенных пресета определяют набор прав в зависимости от типа объекта: | Пресет | Назначение | |--------|------------| | `view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) | | `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) | Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`. ## Шаблоны ограничений (RLS) Элементы массива `templates`: | Поле | Тип | Описание | |------|-----|----------| | `name` | string | Имя шаблона с параметрами: `"ДляОбъекта(Модификатор)"` | | `condition` | string | Текст условия. `&` экранируется в `&` автоматически | Ссылка на шаблон в `rls`: `"#ИмяШаблона(\"параметры\")"` — начинается с `#`. ## Русские синонимы DSL принимает русские имена типов и прав, транслируя их в английские. Полные таблицы соответствий — в `.claude/skills/role-compile/dsl-reference.md`. Примеры: `Справочник` → Catalog, `Документ` → Document, `Чтение` → Read, `Просмотр` → View. ## Пример ```json { "name": "МенеджерПродаж", "synonym": "Менеджер продаж", "objects": [ "Document.РеализацияТоваровУслуг: @edit", "Catalog.Контрагенты: @view", "Catalog.Номенклатура: @view", { "name": "Document.ЗаказКлиента", "preset": "view", "rls": { "Read": "#ДляОбъекта(\"\")" } } ], "templates": [ { "name": "ДляОбъекта(Модификатор)", "condition": "ГДЕ Организация = &ТекущаяОрганизация" } ] } ``` ## Генерируемые файлы ``` Roles/ ИмяРоли.xml # Метаданные (UUID, синоним, флаги) ИмяРоли/ └── Ext/ └── Rights.xml # Права доступа (объекты, права, RLS) ``` ## См. также - [Роли (Rights.xml)](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS - [Гайд по ролям](role-guide.md) — сценарии использования, рабочий цикл