Files
Nick Shirokov 7aaa9fc070 Remove @use preset, merge DataProcessor/Report into @view
The @use preset name conflicted with the Use right semantics.
DataProcessor and Report require Use+View together (View cannot
be set without Use), so @view is the natural fit. Services
(WebService, HTTPService, IntegrationService) use explicit rights.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 13:18:08 +03:00

5.3 KiB
Raw Permalink Blame History

Спецификация 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 Текст условия. & экранируется в &amp; автоматически

Ссылка на шаблон в rls: "#ИмяШаблона(\"параметры\")" — начинается с #.

Русские синонимы

DSL принимает русские имена типов и прав, транслируя их в английские. Полные таблицы соответствий — в .claude/skills/role-compile/dsl-reference.md.

Примеры: Справочник → Catalog, Документ → Document, Чтение → Read, Просмотр → View.

Пример

{
  "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)

См. также