api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права.
$ npx -y skills add IngvarConsulting/unica --skill role-edit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/role-editContext preview
The summary Claude sees to decide when to auto-load this skill.
Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права.
name: role-edit description: Создать роль 1С с набором прав или типизированно изменить права существующей роли по логическому адресу, сохранив RLS, шаблоны и остальные права. argument-hint: <at> <operations> allowed-tools: - Read - Glob
`role.create`, `right.add` и `right.set`.
`<набор>:Role.<Роль>.Right.<Вид>_<Имя>`, например `main:Role.Демо.Right.Catalog_Демо`. Записи роли видны в ветви `<набор>:Role.<Роль>.Right`. Физический `Rights.xml` — внутренняя деталь; наружу путь отдаёт только аварийный `unica.resolve`, и в обычном ходе работы он не нужен.
`unica.search {corpus: "names", kind: "Role"}`. `"main"` ниже только пример.
Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.
`<набор>:Configuration.Can.role.create`, `<набор>:Role.<Роль>.Can.right.add` и `<набор>:Role.<Роль>.Right.<Вид>_<Имя>.Can.right.set`.
Физический путь и diff контрактом результата не являются.
Права роли читаются ветвью `…Role.<Имя>.Right`: запись объекта адресуется `Right.<Вид>_<Имя>`. У вложенного объекта (команда, реквизит) имя содержит точки, и в адресе они экранируются `\.`: `main:Role.Демо.Right.Catalog_Демо\.Command\.Печать` (в JSON — `\\.`). Готовый адрес берётся из `items[].at` ветви.
Создание метит в корень конфигурации: `args.at` — это `<набор>:Configuration`, имя роли лежит в `values.name`. Адреса, которого ещё нет, назвать нельзя. Роль появляется без прав; записи прав создаёт `right.add` на адресе новой роли в том же пакете. Роль и все её права публикуются одной транзакцией: либо роль появляется настроенной, либо не появляется вовсе. Каталогов выгрузки и путей к `Rights.xml` тут нет.
Меняет одно право существующей записи. Адрес — сама запись, `args.values` принимает `right` и хотя бы одно из `value` и `rls`:
| Поле | Что задаёт | |---|---| | `right` | Имя права, например `Delete` | | `value` | Булево значение права | | `rls` | Условие ограничения записей |
`right.set` не создаёт запись: адрес объекта, которого в роли нет, получает `not_found` с `next` к роли. Объект в `values.object` снят — такой вызов получает отказ с адресом записи в `next`.
Создаёт записи прав для объектов, которых в роли ещё нет. Адрес — роль, элемент `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
Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля