# Паттерны настройки категорий

Практические паттерны настройки категорий 1Формы: создание, линейные маршруты, права, связи ДП, табличное представление, сводные разделы, теги, канбан и связи между дополнительными параметрами. Документ собран из материалов admin-basic и admin-pro для администраторов категорий.

## 1. Создание категорий

**Порядок действий**

Базовый порядок создания категории:

1. Создать **раздел** (Служебное > Разделы > + Создать). Раздел = папка для группировки категорий.
2. Создать **категорию** (Категории и процессы > Категории > + Создать). Указать название, родительский раздел и тип — тип задаёт, как будет работать процесс, и потом его не изменить.
3. Настроить базовые параметры категории (Настройки > Все поля): сроки, исполнители, тексты.
4. Выдать права доступа. Базовое право «Просмотр задач» можно выдать сразу при создании — полем «Видимость» в окне; остальные права настраиваются на вкладке «Доступ» (см. раздел 3 ниже).
5. Проверить в интерфейсе: создать тестовую задачу, убедиться что карточка открывается.

**Копирование категорий**

Категории можно копировать вместе со всеми настройками, маршрутом и автоматизацией (Категории > Копировать категорию). Копия создаётся в том же разделе. Рекомендуется для справочников с общими настройками.

**Два типа категорий**

Категории бывают двух типов:

- **Стандартная** — процессная категория со сроками, исполнителями, маршрутом, комментариями.
- **Справочник** — хранилище записей без процессных элементов. Обычно отключены: комментарии, подписи, подзадачи, срок.

## 2. Настройка линейных маршрутов (статусы, переходы)

**Статусы**

Что важно знать о статусах маршрута:

- Системный статус **«Новая»** (ID 1) обязателен, удалить нельзя. Всегда первый.
- **Синие** = активные (задача в работе). Настроек не требуют.
- **Зелёные** = терминальные успешные (Завершена, Выполнена). Требуют: «Исполнение завершено», «Работа завершена», «Заполняется дата завершения».
- **Серые** = терминальные негативные (Отклонена). Требуют: «Исполнение завершено», «Заполняется дата завершения».
- Один статус может использоваться в маршрутах разных категорий. **Изменение названия статуса затрагивает все категории**, где он используется.
- Статусы с одинаковыми названиями, но разными настройками — создавать заново (ID будет уникальным).

**Переходы**

Что важно знать о переходах:

- Переход = изменение статуса. Создаётся в Дизайнере маршрута (визуально) или в режиме «Таблицей».
- Настройки перехода: название кнопки, права (роли/группы), обязательные ДП, подписи.
- Переопределение доступа на переходе: можно снять видимость по умолчанию и выдать конкретным ролям/группам.
- Статус без переходов автоматически удаляется при обновлении страницы.

**Автопереход**

Автопереход выполняется сразу после создания задачи:

- Настраивается в разделе «Таблицей», параметр «Шаг при постановке».
- Доступны только переходы из статуса «Новая».
- Задача автоматически переходит в указанный статус сразу после создания.

## 3. Права доступа на категории

**Ключевой принцип**

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

**Порядок настройки**

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

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

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

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

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

- Сразу выдать права группе Administrators, чтобы видеть результат в интерфейсе.
- **Не выдавать права большим группам** (например, «Все пользователи») — замедляет систему.
- Удаление доступа: через настройки категории (Доступ > По группам > Удалить группу) или через настройки группы (Доступ на категории).

## 4. Связи между категориями (Lookup, Multilookup, Сквозной)

**Lookup**

ДП Lookup связывает задачу с одной задачей другой категории:

- Тип ДП для выбора **одной задачи** из другой категории. Значение = номер задачи, отображение = текст задачи.
- В свойствах ДП (Источник данных) указать категорию и статусы, в которых задачи доступны для выбора.
- Один и тот же ДП Lookup можно переиспользовать в нескольких категориях.

**Multilookup**

ДП Multilookup связывает задачу с несколькими задачами:

- Тип ДП для выбора **нескольких задач** из категории. Представления: таблица или облако тегов.

**Сквозной параметр**

Сквозной параметр подтягивает значение из связанной задачи:

- Отражает значение ДП из связанной задачи через цепочку Lookup/Multilookup.
- При изменении исходного ДП — сквозной обновляется автоматически.
- **После создания всех сквозных ДП — выполнить «Денормализацию базы полностью».**

**Блок «Используется» (БИ)**

Блок «Используется» показывает связанные задачи:

- Отображает задачи из других категорий, которые ссылаются на текущую через Lookup/Multilookup.
- Создаётся в настройках категории (БИ > + Создать).
- Вкладки добавляются из «Связанных категорий».
- Табличный вид настраивается отдельно для каждой вкладки БИ.

## 5. Табличное представление — настройка колонок

**Где настраивается**

Табличный вид настраивается в нескольких местах:

- Категория: Настройки > Настройки представления > Таблица > шестерёнка.
- БИ: Настройки > БИ > вкладка > иконка «Табличный вид».
- Lookup: Свойства ДП > вкладка «Табличный вид» > Настройки.
- Из пользовательского интерфейса (при наличии права «Администратор категории»): три полоски в заголовке таблицы > Настройка.

**Параметры колонок**

Для каждой колонки доступны параметры:

| Параметр | Назначение |
|----------|-----------|
| Выравнивание | Выравнивание содержимого ячеек |
| Тип фильтра | Фильтрация по значению |
| Доступность | Параметр доступен для выбора пользователем |
| Видимость по умолчанию | Отображается сразу при открытии |
| Порядок по умолчанию | Сортировка |
| Закрепление колонки | Фиксация при горизонтальной прокрутке |
| Перенос по строкам | Управление длинными значениями |

**Важно**

Несколько важных моментов:

- Если пользователь не видит настроенный вид — нажать «Вид по умолчанию» (три точки в правом верхнем углу таблицы).
- Табличный вид в ДП Lookup — **общий** для этого ДП из любой категории.
- Если табличный вид не настроен для БИ/Lookup — используется табличный вид категории.

## 6. Изменение маршрутов и статусов (без поломок)

**Изменение названия/настроек статуса**

Чтобы безопасно изменить статус:

1. Проверить, в каких категориях используется (Дизайнер маршрута > нажать на статус > вкладка «Используется»).
2. Если изменения подходят для всех категорий — менять. Иначе — создать новый статус.

**Добавление нового статуса в середину маршрута**

Чтобы добавить статус в середину маршрута:

1. Скрыть старый переход (чтобы не смущать пользователей).
2. Создать новый статус.
3. Создать два новых перехода (до и после нового статуса).
4. Перенести настройки со старого перехода (подписи, обязательные ДП) на новые.
5. Удалить старый переход.

**Доступ к ДП на новом статусе.** Если в категории есть ДП с контролем доступа по статусам, при добавлении нового статуса система сама распространит доступ на него — но только для тех ДП, у которых доступ был настроен на всех прежних статусах. ДП с частичным доступом по статусам новый статус не получат — проверьте и донастройте их вручную в матрице доступа ДП.

**Замена статуса (когда нельзя переименовать)**

Чтобы заменить статус, который нельзя переименовать:

1. Создать новый статус.
2. Во всех переходах **в** старый статус — изменить поле «Статус» на новый.
3. Создать временный переход «Старый > Новый».
4. Пакетной обработкой перевести все задачи из старого статуса в новый.
5. Удалить временный переход.
6. Во всех переходах **из** старого статуса — изменить «Из статуса» на новый.

## 7. Сводные разделы

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

Сводные разделы объединяют задачи из **нескольких категорий**. Два сценария использования:

1. **Источник данных для Lookup/Multilookup**, когда значения выбираются из нескольких категорий (например, плательщик = физ.лицо или юр.лицо).
2. **Навигация** — пользователь просматривает подборку задач из разных категорий по критериям (категории, статусы).

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

Порядок создания:

1. Категории и процессы > Сводные разделы > + Создать.
2. Указать категории, статусы, тип поиска («Вхождение» для частичного совпадения).
3. Создать ДП Lookup с источником данных = сводный раздел.

**Особенности**

В сводный раздел можно добавить неограниченное число категорий (нет лимита в 10). Можно выбрать статус отображаемых задач.

## 8. Теги

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

Теги — метки в ленте задач, показывающие ключевую информацию: статус, значение ДП, название категории, заказчик, приоритет.

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

Порядок создания:

1. Дополнительно > Наборы тегов > + Создать. Указать категорию и название набора.
2. Перейти в «Теги» внутри набора > Создать.
3. Заполнить: набор, имя тега, цвет фона, тип тега, ДП (если тип = extParam).

**Типы тегов (ParamAlias)**

Тип тега определяет, что он отображает:

| ParamAlias | Что отображает | ExtParamID |
|------------|---------------|------------|
| `category` | Название категории | null |
| `state` | Статус задачи | null |
| `owner` | Заказчик | null |
| `extParam` | Значение ДП | ID ДП |

**Отображение.** Тег, привязанный к мультилукап-ДП с несколькими значениями, показывается отдельными бейджами — по одному на каждое выбранное значение. Когда цвет тега берётся из значения, каждый бейдж окрашивается в цвет своего значения (значение без цвета — серым). Тег с одним значением показывается одним бейджом.

**Важно**

Несколько важных моментов:

- При добавлении нового тега все **настроенные по умолчанию** теги в категории пропадают.
- Название набора и имя тега не отображаются в пользовательском интерфейсе.

## 9. Канбан

**Требования к маршруту**

Канбан отображает только статусы из **основного маршрута**. Основной маршрут должен быть **линейным** — без ветвлений, циклов и разрывов; из одного статуса один основной переход.

Для настройки: в свойствах перехода поставить галочку «Основной маршрут».

**Настройка через шаблон задач**

Канбан-карточка настраивается через шаблон задач:

1. Настройка МП > Шаблоны задач > + Создать.
2. JSON-шаблон: `contexts > sections > blocks` (header, body, footer).
3. Привязать шаблон к категории: Формы > Шаблонизация > + Шаблон из списка.

**Элементы карточки канбана**

Карточка канбана состоит из элементов:

- **header** — заголовок (alias: title).
- **body** — ДП и системные поля. Отображаются только если заполнены.
- **footer** — исполнители, приоритет и др.

Типы элементов: `extparam` (ДП по dataKey = ID), `mainParam` (системные: performer, dueDate, priority).

## 10. Связи ДП (фильтрация зависимых параметров)

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

Связи ДП определяют, как значение одного ДП фильтрует другой. Настраиваются в Доп.параметры > Связи доп.параметров.

**Типы связей**

Связь ДП бывает двух типов:

| Тип | Поведение |
|-----|----------|
| **Жёсткая (True)** | Подчинённый ДП пуст, пока не заполнен родительский. Без родительского — значений нет. |
| **Слабая (False)** | Если родительский заполнен — подчинённый фильтруется. Если пуст — все значения доступны. |

**Настройка для Lookup-типов**

Параметры связи для ДП типа Lookup:

| Поле | Значение |
|------|----------|
| Источник данных | ExtParamValue |
| Колонка для отбора | SelectedTaskID |
| Значение подчинённого | TaskID |
| Текст подчинённого | TaskID |

**Особенности**

Между двумя ДП типа «Выпадающий список» возможна **только жёсткая связь**.
