# Паттерны настройки прав
Практические паттерны настройки прав доступа: выдача прав группам, связанные группы, доступ к дополнительным параметрам (ДП), гибкие права на задачи и переопределение доступа на маршрутах. Для администраторов и инженеров внедрения.
## 1. Права на категории: выдаются группам

**Ключевое правило**

Права на категорию выдаются **только группам**. Не пользователям напрямую, не орг.единицам.

Чтобы выдать права конкретному пользователю — создать для него индивидуальную группу.

**Порядок выдачи**

Чтобы выдать права группе:

1. Категория > Доступ > По группам.
2. Найти группу через поиск.
3. Выбрать группу > отметить права в блоке «Права».
4. Сохранить (иконка дискеты).

![Карточка группы, вкладка «Права на категории»: права группы на категории](https://help.1forma.ru/help-images/permissions/group_category_rights.png)

**Удаление доступа**

Отозвать доступ можно двумя способами:

- Из настроек категории: Доступ > По группам > выбрать группу > «Удалить группу».
- Из настроек группы: Доступ на категории > выбрать категорию > снять все отметки в блоке «Действия».

**Практические рекомендации**

При настройке прав на категории учитывайте:

- Сразу выдать права группе Administrators — иначе не увидите результат настроек в UI.
- **Не выдавать права группе «Все пользователи»** — замедляет работу системы.
## 2. Связанные группы и автоматическое обновление

**Связанные группы (организационные)**

Группа, привязанная к орг.единице. Участники добавляются **автоматически** на основании принадлежности к орг.единице. Вручную добавить пользователя нельзя. Удалить пользователя из такой группы тоже нельзя.

**Создание**

Создать связанную группу можно двумя способами:

- Открыть карточку орг.единицы > убедиться что в «Связанная группа» выбрано «(Создать новую)» > нажать «Связать с группой».
- Для целой ветки: «Создать группу для всей ветки» — создаст связанные группы для текущей орг.единицы и всех подчинённых.

![Блок «Связь с орг. единицей» в свойствах группы](https://help.1forma.ru/help-images/users-and-groups/admin_linked_group.png)

**Автоматическое обновление через вложенность**

Родительская группа обновляется автоматически при изменениях во вложенных группах.

Пример: в группу «Все руководители» добавлены вложенные группы руководителей подразделений. Если в отделе продаж сменится руководитель, он **автоматически** попадёт в группу «Все руководители».

**При изменении орг.структуры**

При добавлении новой орг.единицы **обязательно** создать для неё связанную группу. Иначе невозможно будет выдать доступы пользователям этой орг.единицы.
## 3. Доступ к ДП — уровни и механизмы

**Четыре режима доступа к ДП**

В трёх режимах, где есть группы, список для выбора приходит постранично, а поиск по группе выполняется на сервере: подробно — в разделе «Доступ к ДП» документа «Дополнительные параметры».

Доступ к дополнительному параметру можно настроить в одном из четырёх режимов:

| Режим | Где задаётся | Что контролирует |
|-------|-------------|-----------------|
| **По задаче** | Настройки ДП в категории > Доступ = «По задаче» | Стандартный доступ, без ограничений по группам |
| **Только по группам** | Настройки ДП > Доступ = «Только по группам» | Чтение и/или редактирование — конкретным группам |
| **По матрице доступа** | Настройки ДП > Доступ = «По матрице доступа» | Группа + роль + статус = чтение/редактирование/скрыто |
| **Доступ зависит от статуса** | Настройки ДП в категории | Чтение/редактирование по конкретным статусам |

**Матрица доступа — детали**

Как работать с матрицей доступа:

- Добавить группу, роль или право в категории.
- По умолчанию на всех статусах — доступ на чтение (значок глаза).
- Клик: глаз (чтение) > карандаш (редактирование) > пустое поле (нет доступа).

![Матрица доступа: группы по строкам, статусы по столбцам, значки чтения и редактирования](https://help.1forma.ru/help-images/permissions/access_matrix.png)

**Обязательность ДП на переходе**

Настраивается в маршруте: выбрать переход > вкладка «Доп.параметры» > выбрать ДП. Если ДП не заполнен — система не позволит выполнить переход.
## 4. Гибкие права на задачи

**Назначение**

Гибкие права дают доступ к **конкретным задачам** (не ко всем задачам категории) на основании данных в самой задаче. Дают только право **просмотра**.

**Три режима**

Гибкие права работают в одном из трёх режимов:

| Режим | Логика |
|-------|--------|
| **Flat** | ДП типа «Выбор пользователя» находится в той же категории, на задачи которой настраиваются права |
| **Lookup** | ДП Lookup в текущей категории ведёт на категорию-источник, где есть ДП «Выбор пользователя» с указанным пользователем |
| **Multilookup** | Аналогично Lookup, но через Multilookup |

**Ограничение: только ДП «Выбор пользователя»**

Гибкие права могут брать значение **только из ДП «Выбор пользователя»**. В этом ДП допустимы пользователи и группы. **Орг.единицы недопустимы.**

**Паттерн: гибкие права на основе выпадающего списка**

Если доступ зависит от значения ДП типа «Выпадающий список» (например, «Тип лида»):

1. Создать **скрытое** вспомогательное ДП типа «Выбор пользователя».
2. Настроить автоматизацию (смарт «После постановки»): заполнить вспомогательное ДП нужным пользователем в зависимости от значения выпадающего списка.
3. Настроить гибкое право в режиме **Flat** на вспомогательное ДП.

**Важно: гибкие права + права категории**

Гибкие права дают **только просмотр**. Для других действий (редактирование, комментирование и т.д.) нужно дополнительно настроить права в категории для соответствующей группы, **кроме** права «Просмотр всех задач».

> Если ранее выдавались временные доступы по группам на просмотр — отозвать их после настройки гибких прав.
## 5. Доступ к ДП через SQL

**SQL-функция для доступа к ДП**

Для управления доступом к ДП можно написать SQL-функцию. Функция вызывается системой при отображении ДП.

**Возвращаемые значения**

SQL-функция для доступа к ДП может вернуть **только одно значение**:

| Значение | Результат |
|----------|----------|
| `NULL` или `0` | Нет прав, ДП скрыто |
| `1` | Только чтение (без редактирования) |
| `2` | Чтение и редактирование |

Функция возвращает **ровно одно** значение (не набор): `1` — только чтение, без возможности редактирования.
## 6. Переопределение доступа на переходах маршрута

**Контроль видимости кнопок перехода**

В настройках перехода (Дизайнер маршрута > нажать на стрелку перехода) доступен блок «Переопределение доступа»:

1. Снять видимость по умолчанию.
2. Указать конкретные роли (заказчик, исполнитель) или группы, которым кнопка перехода будет доступна.
3. Галочка «Кнопка скрыта» — полностью скрывает переход.

**Практика**

Используется для разделения прав на движение задачи по маршруту. Например: кнопку «Согласовано» видит только руководитель, кнопку «Отправить на доработку» — только исполнитель.

**7. Системные группы — ограничения**

**Запрещено**

Не допускается:

- Удалять системные группы: «Все пользователи», «Users», «Administrators».
- Удалять учётные записи `support`, `systemrobot`, `anonymous` или менять их настройки.
- Удалять учётную запись из группы Administrators — пользователь потеряет доступ к администрированию.
- Удалять пользователей из связанных групп (привязанных к орг.единицам).
