Паттерны управления пользователями и группами¶
Организационная структура¶
Иерархия типов¶
Тип орг.единицы задаёт её уровень в иерархии. Стандартная конфигурация:
| Тип | Уровень |
|---|---|
| Компания | 0 |
| Департамент | 1 |
| Отдел | 2 |
| Должность | 3 |
Должность — конечный уровень иерархии в каждой ветке.
Создание оргструктуры — порядок¶
Рекомендуемый порядок создания оргструктуры с нуля:
- Типы орг.структуры (Администрирование → Пользователи и группы → Типы орг.структуры)
- Дерево орг.единиц (сверху вниз: компания → департамент → отдел → должность)
- Пометить руководящие должности (галочка «Руководитель» в настройках орг.единицы)
- Создать пользователей (Фамилия, логин, псевдоним, Email — обязательные)
- Привязать пользователей к должностям
Множественные орг.единицы¶
Пользователю можно назначить несколько орг.единиц, но только одна — основная (галочка «Основная» в профиле, подсвечивается жирным).
Группы¶
Типы групп¶
На практике используются три основных типа групп:
| Тип | Описание | Управление составом |
|---|---|---|
| Связанная (организационная) | Привязана к орг.единице | Автоматически: участники = сотрудники орг.единицы. Ручное добавление невозможно |
| Обычная | Произвольный набор пользователей | Ручное добавление/удаление |
| Индивидуальная | Один пользователь | Для выдачи прав конкретному человеку |
Системные группы¶
Несколько групп создаются и поддерживаются системой автоматически:
- Все пользователи — все пользователи системы (автоматически)
- Administrators — доступ к разделу администрирования
Внимание: системные учётки
support,systemrobot,anonymous— не менять настройки, может привести к некорректной работе. Восстановление = сброс всех настроек.
Создание связанной группы¶
Администрирование → Пользователи и группы → Орг. структура → выбрать орг.единицу → «Связанная группа» = (Создать новую) → «Связать с группой».

Варианты:
- Одна группа для одной орг.единицы
- Одна группа для всей ветки (рекурсивно включает дочерние)
Актуализация связанной группы¶
Состав связанной группы обновляется автоматически при добавлении/удалении пользователей из связанной орг.единицы. Ручное редактирование состава — через орг.единицу, не через группу.
Права доступа к категориям выдаются только группам — не отдельным пользователям и не орг.единицам.
Роли пользователей в задачах¶
В каждой задаче пользователь может выступать в одной или нескольких ролях:
| Роль | Описание | Кратность |
|---|---|---|
| Заказчик | Создал задачу | Один на задачу |
| Исполнитель | Назначен на исполнение | Несколько, но ответственный — один |
| Подписчик | Наблюдает, может комментировать, не исполняет | Без ограничений |
| Акцептант | Запрошена подпись | Без ограничений |
Изменение оргструктуры¶
Перемещение орг.единиц¶
При реорганизации (слияние отделов, переподчинение):
- Перемещение орг.единицы = перемещение всех вложенных + связанных групп
- Права, завязанные на связанную группу, сохраняются
- После перемещения — проверить, что логика Smart-правил не сломалась (если привязаны к конкретным орг.единицам по ID)
Изменение команды¶
Кадровые изменения отражаются на группах и правах автоматически:
- Добавление нового сотрудника: создать пользователя → привязать к должности → автоматически попадёт в связанные группы → автоматически получит права
- Увольнение: деактивировать пользователя (не удалять — история задач сохраняется)
- Перевод между отделами: сменить орг.единицу → автоматически сменятся группы → автоматически сменятся права
Ограничения оргструктуры¶
Уникальность имён¶
По умолчанию название орг.единицы должно быть уникально в рамках одного родителя (Name + ParentId). При попытке создать дубликат система выбрасывает ошибку OrgStructureUnits_NotUnique.
Однако это поведение управляется кастомной настройкой OrgStructure_AllowNonUniqueOrgUnitNames (по умолчанию false). Если включить — дубликаты разрешены.
На уровне БД ограничения уникальности на пару «название + родитель» нет — проверка выполняется только в приложении.
Удаление орг.единиц¶
Удаление орг.единицы с активными (не уволенными) пользователями невозможно. Система выбрасывает TCLogicException: «Невозможно удалить организационную единицу, поскольку в ней есть сотрудники».
Порядок действий при удалении:
- Уволенные пользователи автоматически открепляются от орг.единицы.
- Если остались активные пользователи — ошибка.
- Если пользователей нет — удаляются дочерние элементы и связанная группа.
При удалении родительской орг.единицы удаляются все дочерние элементы. Если нужно сохранить вложенные единицы — сначала перенесите их (измените поле «Входит в»), потом удаляйте родителя.
Обязательные поля при создании пользователя¶
Безусловно обязательные поля: орг.единица, логин, пароль.
Дополнительные обязательные поля определяются в Общих настройках приложения (блок «Обязательные поля профиля пользователя»): фамилия, дата рождения, псевдоним на русском, e-mail. Набор зависит от конфигурации конкретной инсталляции.