1c-role-edit
Точечная правка существующей роли 1С. Используй когда нужно добавить, изменить или снять права объекта, условие RLS, шаблон ограничения или свойства роли. Новую роль собирает 1c-role-compile
SKILL.mdskills/1c-role-edit/SKILL.md
GitHub/role-edit - точечная правка существующей роли 1С
Меняет уже собранную роль: Roles/<Имя>.xml и Roles/<Имя>/Ext/Rights.xml. UUID роли, права других объектов и их порядок в файле остаются. После правки набор прав затронутого объекта замыкается так же, как при сборке роли, и выстраивается в каноническом порядке выгрузки платформы 8.3.27.
Когда применять
Роль уже лежит в выгрузке, и нужно изменить ее права, ограничение RLS, шаблон или свойства.
Когда не применять
| Задача | Куда |
|---|---|
| Роли еще нет, ее надо создать | 1c-role-compile |
| Показать состав роли | 1c-role-info |
| Проверить файл роли | 1c-role-validate |
Параметры и команда
| Параметр | Описание |
|---|---|
RolePath |
Roles/<Имя>.xml, каталог роли или Ext/Rights.xml |
DefinitionFile |
JSON: одна операция, массив или объект с полем operations |
Operation |
Одна операция без JSON-файла |
Object |
Объект метаданных, например Catalog.Товары |
Rights |
Права для add-rights, set-rights, remove-rights, deny-rights |
Right |
Одно право для set-rls и remove-rls |
Template |
Имя шаблона ограничения |
Condition |
Текст условия RLS или шаблона |
Property |
synonym, comment, setForNewObjects, setForAttributesByDefault, independentRightsOfChildObjects |
Value |
Значение свойства или запасной носитель прав и условия |
NoValidate |
Не вызывать 1c-role-validate после записи |
powershell.exe -NoProfile -File skills/1c-role-edit/scripts/role-edit.ps1 -RolePath "Roles/Кладовщик.xml" -DefinitionFile "edit.json"
python skills/1c-role-edit/scripts/role-edit.py -RolePath "Roles/Кладовщик.xml" -Operation add-rights -Object "Catalog.Товары" -Rights "Edit"
-DefinitionFile и -Operation вместе не задают. Неизвестная операция и право, которого нет у типа объекта, завершают команду с кодом 1 до записи.
Операции
| Операция | Что меняет |
|---|---|
add-rights |
Добавляет права к объекту. Уже заданные права другого объекта не переписываются |
set-rights |
Заменяет набор прав объекта. Условие RLS сохраняется у права, которое осталось в наборе |
remove-rights |
Снимает перечисленные права. Пустой набор удаляет блок объекта |
deny-rights |
Записывает явное false. Если включенное право требует это право, в stderr предупреждение: платформа отбросит блок объекта при загрузке |
set-rls |
Ставит условие на право и включает это право |
remove-rls |
Снимает условие, само право не снимает |
add-template |
Добавляет шаблон. Если имя уже есть, код 1: для замены нужен set-template |
set-template |
Задает текст шаблона, при отсутствии шаблон создается |
remove-template |
Удаляет шаблон по имени |
modify-property |
Синоним и комментарий в файле метаданных роли, три признака в Rights.xml |
Имена типов и прав можно давать по-русски (Справочник.Товары, Чтение): они переводятся в канонические английские имена. Ключи JSON читаются без учета регистра.
Замыкание включенных прав совпадает с 1c-role-compile: Edit влечет Read, Update, View, и дальше по зависимостям, замер платформы 8.3.27. У вложенного объекта (Catalog.Товары.Attribute.Код) зависимости не дописываются.
View и Edit реквизита, табличной части, стандартного реквизита, измерения и ресурса регистра после операции совпадают с выгрузкой: Edit=true при View=false дает View=true, View=false без явного Edit дает Edit=false, право, равное setForAttributesByDefault, из файла уходит. Право стандартного реквизита с условием RLS остается при любом значении; set-rls на реквизит, измерение или ресурс - ошибка ввода. Если при setForAttributesByDefault=true и independentRightsOfChildObjects=false остаются права на поля объекта без прав на сам объект, в stderr предупреждение со ссылкой на стандарт #std532.
Примеры
Добавить редактирование справочника и условие на чтение:
[
{ "operation": "add-rights", "object": "Catalog.Товары", "rights": "Edit" },
{ "operation": "set-rls", "object": "Catalog.Товары", "right": "Read", "condition": "#ПоОрганизации(\"\")" },
{ "operation": "add-template", "template": "ПоОрганизации(Мод)", "condition": "ГДЕ Организация = &ТекущаяОрганизация" }
]
Снять просмотр у обработки, явно запретить интерактивное удаление, сменить синоним:
[
{ "operation": "remove-rights", "object": "DataProcessor.Загрузка", "rights": ["View"] },
{ "operation": "deny-rights", "object": "Catalog.Товары", "rights": "InteractiveDelete" },
{ "operation": "modify-property", "property": "synonym", "value": "Кладовщик склада" },
{ "operation": "modify-property", "property": "setForNewObjects", "value": true }
]
rights принимает строку через запятую, список имен или словарь {"Read": true, "Delete": false}. Для deny-rights перечисленные права записываются как false независимо от словаря.