Files
cc-1c-skills/.claude/skills/role-edit/SKILL.md
T
Nick ShirokovandClaude Opus 5 9fcf7329ba docs(role-compile,role-edit): инструкции только про применение
Убран раздел про русские синонимы: прощающий ввод в инструкции даёт
модели развилку там, где есть одна каноничная форма — английская.
Убран раздел про замыкание набора при выдаче: навык перечисляет
дописанное в выводе, а в инструкции это лишняя механика. Оставлено
только то, что меняет решение ДО вызова: снятие и запрет уносят больше
перечисленного.

В примере объектной формы запрет переехал с объекта верхнего уровня на
реквизит: на верхнем уровне такая запись при умолчаниях роли не
хранится, и пример учил бесполезному.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
2026-09-13 20:23:20 +03:00

8.6 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
role-edit Точечное редактирование существующей роли 1С. Используй когда нужно добавить, снять или запретить права, настроить RLS-ограничения и шаблоны, изменить свойства роли без потери прочих прав и UUID <RolePath> -Operation <op> -Value "<val>" | -DefinitionFile <json> [-NoValidate]
Bash
Read
Write
Glob

/role-edit — точечное редактирование роли 1С

Меняет права существующей роли на месте: UUID, прочие права, RLS и шаблоны сохраняются. Создание новой роли — /role-compile.

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

Параметр Описание
RolePath Каталог роли, Roles/Имя.xml или Roles/Имя/Ext/Rights.xml
Operation Одна операция из таблицы ниже
Value Значение операции; несколько значений — через ;;
DefinitionFile JSON-массив операций (альтернатива Operation) — так задают несколько разных операций
NoValidate Не запускать role-validate после правки
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-edit.ps1" -RolePath "<роль>" -Operation <op> -Value "<значение>"

Операции применяются в том порядке, в котором перечислены.

Операции

Операция Формат Value Описание
add-rights Тип.Имя: Право1, Право2 или Тип.Имя: @пресет Добавить права, прежние сохранить
set-rights то же Заменить набор прав объекта целиком
remove-rights Тип.Имя: Право1, Право2 — снять права
Тип.Имя — удалить объект целиком
Снять права
deny-rights Тип.Имя: Право1, Право2 Запретить права явно
set-rls Тип.Имя.Право: условие
Тип.Имя.Право[Поле1, Поле2]: условие
Ограничение доступа к данным
remove-rls Тип.Имя.Право — снять все
Тип.Имя.Право[Поле1] — снять одну строку
Снять ограничение, право оставить
add-template Имя(Параметры): условие Добавить шаблон ограничения
set-template то же Заменить шаблон, а если его нет — добавить
remove-template Имя(Параметры) или Имя Удалить шаблон
modify-property setForNewObjects=true
setForAttributesByDefault=false
independentRightsOfChildObjects=true
Глобальные флаги роли
set-synonym текст Синоним роли
set-comment текст Комментарий роли

Быстрые примеры

# Добавить права нового регистра, ничего не потеряв
... -RolePath "src/Roles/Менеджер" -Operation add-rights -Value "InformationRegister.Цены: Read, Update"

# Пресет и несколько объектов в одном вызове
... -RolePath "src/Roles/Менеджер" -Operation add-rights -Value "Catalog.Товары: @view ;; Document.Заказ: @edit"

# Снять права; объект без разрешающих прав удаляется целиком
... -RolePath "src/Roles/Менеджер" -Operation remove-rights -Value "Document.Заказ: Delete"

# Закрыть реквизит от роли
... -RolePath "src/Roles/Менеджер" -Operation deny-rights -Value "Catalog.Товары.Attribute.Цена: View"

Несколько разных операций — списком в файле:

[
  { "operation": "add-rights", "value": "Catalog.Товары: @view" },
  { "operation": "set-rls", "value": "Catalog.Товары.Read: #ПоОрганизации(\"\")" }
]
... -RolePath "src/Roles/Менеджер" -DefinitionFile "операции.json"

Права

Имена объектов и прав — те же, что в /role-compile: Catalog, Read, пресеты @view и @edit, вложенные пути (Catalog.Контрагенты.Attribute.ИНН: View, Edit), короткая запись сервиса (HTTPService.ЭДО: Use раскрывается по всем методам шаблонов URL).

remove-rights и deny-rights задевают больше перечисленного: уходят и права, которым снятое нужно (сняли Read — уйдут Update, View, Edit). Снятое каскадом перечисляется в выводе.

Роль хранит только то, что отличается от её умолчаний, — всё совпавшее навык не пишет и говорит об этом:

Где Что имеет смысл
объект верхнего уровня, setForNewObjects=false (умолчание) выдача прав; запрет бессмыслен
объект верхнего уровня, setForNewObjects=true запрет; выдача бессмысленна
реквизит, ТЧ, измерение, ресурс, setForAttributesByDefault=true (умолчание) запрет: права наследуются от объекта
они же при setForAttributesByDefault=false и выдача, и запрет

Запрет тянет за собой права, которым запрещённое нужно: View=false у реквизита уносит Edit.

Тип или имя права вне допустимого списка — отказ: файл не меняется, ошибки печатаются все разом. Полные таблицы «тип → права» и виды вложенности — в справке /role-compile.

RLS

Ограничения права — это список строк, как в таблице «Ограничения доступа к данным» редактора. Строка без списка полей действует на все прочие поля, строка со списком — только на них. Типовой приём: закрыть данные целиком, но оставить поля представления ссылки открытыми, иначе ссылки на объект превратятся в «объект не найден»:

... -Operation set-rls -Value "Catalog.Товары.Read: ГДЕ ЛОЖЬ"
... -Operation set-rls -Value "Catalog.Товары.Read[Ссылка, Код, Наименование]: "

Строка с тем же набором полей заменяется, с другим — добавляется. Ограничение на невыданное право — ошибка: платформа такое молча игнорирует.

Ссылка на шаблон — #ИмяШаблона(""); & в условиях экранируется автоматически.

Значение из файла

Вместо текста можно указать @путь — условие RLS, тело шаблона, синоним и комментарий берутся из файла. Относительный путь ищется рядом с DefinitionFile, затем в текущем каталоге. Разделитель ;; внутри файла остаётся обычным текстом.

... -Operation set-rls -Value "Catalog.Товары.Read: @условие.txt"
... -Operation add-template -Value "ПоОрганизации(Мод): @условие.txt"
... -Operation set-comment -Value "@комментарий.txt"

Верификация

/role-info <RightsPath>      — сводка прав после правки
/role-validate <RightsPath>  — проверка корректности (запускается автоматически)