Files
cc-1c-skills/docs/role-dsl-spec.md
T
Nick Shirokov 26888a07d5 chore(repo): нормализация EOL к LF + .gitattributes
Приводим авторский контент (.ps1/.psm1/.py/.mjs/.md/.json, пин .bsl)
к единому LF и закрепляем политикой в .gitattributes. Инструмент правки
всегда пишет LF, поэтому единый LF убирает EOL-шум в диффах, ложные
срабатывания blame и налог на ручную синхронизацию CRLF-файлов.

BOM на .ps1 сохранён (git с eol=lf меняет только CR<->LF, BOM не трогает).
Данные 1С (*.xml) и бинарники под нормализацию не берём.

Гейт: PS-порт 459/459, Python-порт 459/459, web-test E2E 22/22 (с пересборкой стенда).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 14:22:45 +03:00

5.2 KiB
Raw 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)

См. также