Инструменты · Права
rights_write
Пишет права одной роли — права объекта (выдать, снять, сбросить к умолчанию роли), права его реквизитов и команд, ограничения на уровне записей, пачку объектов роли одним вызовом и шаблоны ограничений. Изменения — дельтой: переданное применяется, остальное не трогается.
Когда использовать
- Выдать или снять права объекта в одной роли —
updateпо адресуRole.X.Rights::<объект>. - Несколько объектов в роли — пачка по адресу
Role.X.Rights. - Ограничение на уровне записей на чтение или изменение —
rls, вместе с выдачей права в том же вызове. - Скопировать стандартные шаблоны ограничений в свою роль —
createпо адресуRole.X.RestrictionTemplateсcopy_from. - Один набор прав сразу многим ролям —
rights_action.
Соседние инструменты домена «Права»
Операции
| operation | Что делает | Нужно передать |
|---|---|---|
updateпо умолчанию | Дельта прав объекта: сначала reset, затем grant, deny, rls. Наборы @read, @edit, @all раскрываются по типу объекта, раскрытие видно в Changes. Зависимые права платформы добавляются с предупреждением (Edit ⇒ View). По адресу Role.X.Rights — только пачка объектов. Менять нечего — ⚪ noop. | project, fqn, definition |
create | Шаблоны ограничений: одиночный по адресу ….RestrictionTemplate.<Имя> или пачка по ….RestrictionTemplate — с condition или copy_from. На адресе ::<объект> — то же, что update. | project, fqn, definition |
delete | Удаляет все явные записи объекта в роли (то же, что сброс @all) или шаблон ограничения. | project, fqn |
Параметры
| Параметр и тип | Обязательный | Описание | По умолчанию |
|---|---|---|---|
projectстрока | да | Идентификатор проекта рабочей области EDT — имя из ответа project_read (например, УТ2020). Для расширения — проект расширения. | — |
operationстрока | нет | Операция инструмента — значения и их смысл в таблице «Операции».значения: update · create · delete | update |
fqnстрока | да | Role.X.Rights::<объект> — объект в роли; Role.X.Rights — только пачка; Role.X.RestrictionTemplate[.Имя] — шаблоны. Русские формы тоже принимаются. Контракт — rights_read с гранью #help на том же адресе. | — |
definitionобъект | массив | нет | Для объекта: grant, deny, reset — имена прав по-английски или по-русски либо наборы @read, @edit, @all; rls — {"Read": [{"condition": "…"}]} заменяет список ограничений права; sub_objects — {grant, deny, except} для реквизитов, табличных частей и команд владельца. Для шаблона: condition, copy_from, name. Массив — пачка: у объектов ключ object, у шаблонов name; до 100, всё или ничего. | — |
dry_runбулево | нет | true — план и предпросмотр по снимку прав, без записи. | false |
titleстрока | нет | Необязательная подпись вызова до 40 символов: клиент показывает её в шапке карточки вызова. На результат не влияет. | — |
Таблица собрана из схемы инструмента, которую получает агент при подключении.
Адреса
| Адрес | Что адресует |
|---|---|
Role.<Роль>.Rights::Catalog.Номенклатура | права справочника в роли |
Role.<Роль>.Rights::Catalog.Номенклатура.Attribute.<Реквизит> | права реквизита |
Role.<Роль>.Rights | пачка объектов роли |
Role.<Роль>.RestrictionTemplate | пачка шаблонов ограничений |
Пример вызова и ответа
View добавлено само: без него Edit не работает. deny для права, которое у роли по умолчанию не выдано, снимает явную запись — → default.
{
"project": "УТ2020",
"operation": "update",
"fqn": "Role.ДобавлениеИзменениеНоменклатуры.Rights::Catalog.Номенклатура",
"definition": { "grant": ["Edit"], "deny": ["InteractiveDelete"] }
}### 🟢 update — Role.ДобавлениеИзменениеНоменклатуры.Rights::Catalog.Номенклатура
- **status:** 🟢 committed
- **fqn:** `Role.ДобавлениеИзменениеНоменклатуры.Rights::Catalog.Номенклатура`
- **operation:** `update`
#### Changes
- Catalog.Номенклатура: +View (⇐ Edit), +Edit · −InteractiveDelete → default
#### Warnings
- View: + по зависимости от EditОтказы и ошибки
rolled_back · ограничение на невыданное право
Ограничение на уровне записей задаётся только для явно выданного права. Добавьте grant в тот же вызов.
### 🟠 update — Role.ЧтениеЗаказов.Rights::Document.ЗаказКлиента
- **status:** 🟠 rolled_back
- **fqn:** `Role.ЧтениеЗаказов.Rights::Document.ЗаказКлиента`
- **operation:** `update`
- **rollback_reason:** RLS на Update: право не выдано явно (default: denied); добавьте в тот же вызов "grant":["Update"]; контракт: rights_read Role.ЧтениеЗаказов.Rights::Document.ЗаказКлиента#helprolled_back · расширение только добавляет
В роли расширения нельзя снимать права, сбрасывать их и задавать ограничения — эффективные права правятся в базовой конфигурации.
### 🟠 update — Role.ПолныеПрава.Rights::Catalog.Валюты
- **status:** 🟠 rolled_back
- **fqn:** `Role.ПолныеПрава.Rights::Catalog.Валюты`
- **operation:** `update`
- **rollback_reason:** расширение только добавляет права: deny/reset в роли расширения недопустимы — эффективные права правятся в конфигурации-родителе; контракт: rights_read Role.ПолныеПрава.Rights::Catalog.Валюты#helpnoop
Все указанные права уже в нужном состоянии — изменений нет.
### ⚪ update — Role.ПолныеПрава.Rights::Catalog.Валюты
- **status:** ⚪ noop — все указанные права уже в нужном состоянии
- **fqn:** `Role.ПолныеПрава.Rights::Catalog.Валюты`
- **operation:** `update`failed · роль на поддержке
Роль закрыта поставщиком — отказ до любых изменений. Права к заимствованным объектам добавляйте в роли расширения.
failed · Unknown operation
Неизвестное значение operation. В ответе — fix_hint: supported: … со списком допустимых операций и секция Did you mean. Допустимо: update, create, delete.
failed · лицензия
Без действующего ключа инструмент отвечает карточкой failed с сообщением лицензия: … и подсказкой, где ввести ключ; в секции Context — список инструментов, доступных без ключа. Подробнее — Лицензия и бесплатный доступ.
Ограничения
- Ограничения на уровне записей — только для
Read,Insert,Update,Delete; грамматика условия не проверяется (validation: skipped). - В расширении объект должен быть заимствован (
metadata_actionс операциейadopt). - Сразу после запуска EDT возможен ответ «повторите»: модель прав ещё загружается.