Skip to content
Development
Skill

/role-edit

Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права.

BOOST
From plugin
unica
22749 skills1 MCP
Install
$ npx -y skills add IngvarConsulting/unica --skill role-edit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/role-edit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права.

SKILL.md

role-edit.SKILL.md
name: role-edit
description: Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права.
argument-hint: <at> <operations>
allowed-tools:
  - Read
  - Glob

/unica:role-edit — создание роли и точечное редактирование её прав

MCP routing

  • Preferred path: use MCP `unica` tool `unica.apply` с операциями

`role.create`, `right.add` и `right.set`.

  • Права одного объекта — запись роли со своим адресом

`<набор>:Role.<Роль>.Right.<Вид>_<Имя>`, например `main:Role.Демо.Right.Catalog_Демо`. Записи роли видны в ветви `<набор>:Role.<Роль>.Right`. Физический `Rights.xml` — внутренняя деталь; наружу путь отдаёт только аварийный `unica.resolve`, и в обычном ходе работы он не нужен.

  • Имя набора даёт `unica.view {}`, адрес роли по имени —

`unica.search {corpus: "names", kind: "Role"}`. `"main"` ниже только пример.

  • Сначала вызови `unica.apply` с `at` и `ops`: это план без записи.

Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.

  • Точную форму аргументов даёт контракт операции по её адресу:

`<набор>:Configuration.Can.role.create`, `<набор>:Role.<Роль>.Can.right.add` и `<набор>:Role.<Роль>.Right.<Вид>_<Имя>.Can.right.set`.

  • Читай из ответа `changed`, `effects` по порядку операций и диагностики.

Физический путь и diff контрактом результата не являются.

Права роли читаются ветвью `…Role.<Имя>.Right`: запись объекта адресуется `Right.<Вид>_<Имя>`. У вложенного объекта (команда, реквизит) имя содержит точки, и в адресе они экранируются `\.`: `main:Role.Демо.Right.Catalog_Демо\.Command\.Печать` (в JSON — `\\.`). Готовый адрес берётся из `items[].at` ветви.

Операция `role.create`

Создание метит в корень конфигурации: `args.at` — это `<набор>:Configuration`, имя роли лежит в `values.name`. Адреса, которого ещё нет, назвать нельзя. Роль появляется без прав; записи прав создаёт `right.add` на адресе новой роли в том же пакете. Роль и все её права публикуются одной транзакцией: либо роль появляется настроенной, либо не появляется вовсе. Каталогов выгрузки и путей к `Rights.xml` тут нет.

Операция `right.set`

Меняет одно право существующей записи. Адрес — сама запись, `args.values` принимает `right` и хотя бы одно из `value` и `rls`:

| Поле | Что задаёт | |---|---| | `right` | Имя права, например `Delete` | | `value` | Булево значение права | | `rls` | Условие ограничения записей |

`right.set` не создаёт запись: адрес объекта, которого в роли нет, получает `not_found` с `next` к роли. Объект в `values.object` снят — такой вызов получает отказ с адресом записи в `next`.

Операция `right.add`

Создаёт записи прав для объектов, которых в роли ещё нет. Адрес — роль, элемент `args.items` называет объект (`object`, например `Catalog.Демо`) и его начальные права (`rights`, например `{"Read": true}`). Объект, у которого запись уже есть, отвергается: его права меняет `right.set` по адресу записи. Ограничение записей на новую запись ставит `right.set` в том же пакете.

Вложенный объект (`DataProcessor.X.Command.Y`, реквизит) получает одну запись: остальные точки его имени в адресе экранируются, `Role.R.Right.DataProcessor_X\.Command\.Y`. Адрес записи — только каноническое имя `<Вид>_<Имя>` из ветви `Right`.

Операции выполняются по порядку и публикуются одной транзакцией: либо все, либо ни одной. Повтор эквивалентной `right.set` даёт `changed: false` без записи.

Платформа хранит объектное право только со значением, отличным от умолчания роли `setForNewObjects`. Поэтому `right.set` со значением умолчания (обычно `false`) удаляет элемент права вместе с его RLS, а опустевшую запись — целиком; если право уже отсутствует, это законный no-op. По той же причине `right.add` отвергает запись, все права которой равны умолчанию: она осталась бы пустой.

Автоматическое включение зависимых прав в согласуемый preview ещё не реализовано ([задача #941](https://github.com/IngvarConsulting/unica/issues/941)). До реализации проверь доказанные зависимости и согласуй полный набор прав с человеком. Не считай одиночный `right.set` проверкой полноты этого набора.

Для `DataProcessor.*` значение `Use=false` применяет правило платформы: удаляется вся запись вместе с зависимым правом `View`. На другие виды объектов и права это не обобщается.

Типовые наборы прав

Инструмент не знает пресетов: каждое право в `rights` называется явно, и предпросмотр показывает выданные права поимённо. Типовые наборы для `right.add` — разверни их сам по таблицам ниже.

Просмотр:

| Вид объекта | Права | |---|---| | Catalog, ExchangePlan, Document, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, BusinessProcess, Task | Read, View, InputByString | | InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, Constant, DocumentJournal | Read, View | | Sequence | Read | | CommonForm, CommonCommand, Subsystem, FilterCriterion, CommonAttribute | View | | DataProcessor, Report | Use, View | | SessionParameter | Get | | Configuration (объект `Configuration.<Имя конфигурации>`) | ThinClient, WebClient, Output, SaveUserData, MainWindowModeNormal |

Полное редактирование:

| Вид объекта | Права | |---|---| | Catalog, ExchangePlan, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes | Read, Insert, Update, Delete, View, Edit, InputByString, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark | | Document | Read, Insert, Update, Delete, View, Edit, InputByString, Posting, UndoPosting, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark, InteractivePosting, InteractivePostingRegular, InteractiveUndoPosting, InteractiveChangeOfPosted | | BusinessProcess | Read, Insert, Update, Delete, View, Edit, InputByString, Start, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark, InteractiveActivate, InteractiveStart | | Task | Read, In

Read more
Ships withunica

Unica (Ю&#x301;ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.

Get the whole plugin

Other skills on unica.

api-design
Skill

api-design

Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…

autonomous-server
Skill

autonomous-server

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

background-jobs
Skill

background-jobs

Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…

bsp-patterns
Skill

bsp-patterns

Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…

cf-edit
Skill

cf-edit

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…

cf-init
Skill

cf-init

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля