/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 — снять права<br>Тип.Имя — удалить объект целиком | Снять права |
deny-rights | Тип.Имя: Право1, Право2 | Закрыть реквизит или ТЧ, которые иначе наследуют права объекта |
set-rls | Тип.Имя.Право: условие<br>Тип.Имя.Право[Поле1, Поле2]: условие | Ограничение доступа к данным |
remove-rls | Тип.Имя.Право — снять все<br>Тип.Имя.Право[Поле1] — снять одну строку | Снять ограничение, право оставить |
add-template | Имя(Параметры): условие | Добавить шаблон ограничения |
set-template | то же | Заменить шаблон, а если его нет — добавить |
remove-template | Имя(Параметры) или Имя | Удалить шаблон |
modify-property | setForNewObjects=true<br>setForAttributesByDefault=false<br>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). Снятое каскадом перечисляется в выводе.
Ошибка в значении — отказ до записи, файл не меняется. Полные таблицы «тип → права» и виды
вложенности — в справке /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> — проверка корректности (запускается автоматически)