Cc-1c-skills role-compile

Создание роли 1С из описания прав. Используй когда нужно создать новую роль с набором прав на объекты

install
source · Clone the upstream repo
git clone https://github.com/Nikolay-Shirokov/cc-1c-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Nikolay-Shirokov/cc-1c-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/role-compile" ~/.claude/skills/nikolay-shirokov-cc-1c-skills-role-compile && rm -rf "$T"
manifest: .claude/skills/role-compile/SKILL.md
source content

/role-compile — генерация роли 1С из JSON DSL

Принимает JSON-определение роли → генерирует

Roles/Имя.xml
(метаданные) и
Roles/Имя/Ext/Rights.xml
(права). UUID автоматически.

Параметры и команда

ПараметрОписание
JsonPath
Путь к JSON-определению роли
OutputDir
Корень выгрузки конфигурации (где
Configuration.xml
,
Roles/
и т.д.)
powershell.exe -NoProfile -File .claude/skills/role-compile/scripts/role-compile.ps1 -JsonPath "<json>" -OutputDir "<ConfigDir>"

Создаёт

{OutputDir}/Roles/Имя.xml
и
{OutputDir}/Roles/Имя/Ext/Rights.xml
. Регистрирует
<Role>
в
Configuration.xml
.

JSON DSL

Структура

{ "name": "ИмяРоли", "synonym": "Отображаемое имя", "objects": [...], "templates": [...] }

Необязательные:

comment
(""),
setForNewObjects
(false),
setForAttributesByDefault
(true),
independentRightsOfChildObjects
(false).

Shorthand-строки и объектная форма

"objects": [
  "Catalog.Номенклатура: @view",
  "Document.Реализация: @edit",
  "DataProcessor.Загрузка: @view",
  "InformationRegister.Цены: Read, Update",
  { "name": "Document.Продажа", "preset": "view", "rights": {"Delete": false}, "rls": {"Read": "#Шаблон(\"\")"} }
]
  • Shorthand:
    "Тип.Имя: @пресет"
    или
    "Тип.Имя: Право1, Право2"
  • Объектная форма:
    preset
    +
    rights
    (переопределения) +
    rls
    (ограничения)

Пресеты

ПресетДействие
@view
Просмотр — Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов)
@edit
Полное редактирование — CRUD + Interactive* + Posting (документы)

@
обязателен в shorthand. В объектной форме —
"preset": "view"
без
@
.

Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права:

"WebService.Имя: Use"
.

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

Поддерживаются русские типы (

Справочник
→Catalog,
Документ
→Document) и права (
Чтение
→Read,
Просмотр
→View). Смешивание допустимо:
"Справочник.Контрагенты: Чтение, View"
.

Шаблоны RLS

"templates": [{"name": "ДляОбъекта(Мод)", "condition": "ГДЕ Организация = &ТекОрг"}]

Ссылка в

rls
:
"#ДляОбъекта(\"\")"
. Символ
&
автоматически экранируется в XML.

Примеры

Простая роль

{
  "name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры",
  "objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @view"]
}

Роль с RLS

{
  "name": "ЧтениеДокументовПоОрганизации",
  "synonym": "Чтение документов (ограничение по организации)",
  "objects": [
    "Catalog.Организации: @view",
    {"name": "Document.РеализацияТоваровУслуг", "preset": "view", "rls": {"Read": "#ДляОбъекта(\"\")"}}
  ],
  "templates": [{"name": "ДляОбъекта(Модификатор)", "condition": "ГДЕ Организация = &ТекущаяОрганизация"}]
}

Подробные таблицы пресетов, русских синонимов и дополнительные примеры — в

dsl-reference.md
.

Верификация

/role-validate <RightsPath> [MetadataPath]  — проверка корректности XML, прав, RLS
/role-info <RightsPath>                     — визуальная сводка структуры