Перейти к содержанию

Паттерны управления пользователями и группами

Организационная структура

Иерархия типов

Тип орг.единицы задаёт её уровень в иерархии. Стандартная конфигурация:

Тип Уровень
Компания 0
Департамент 1
Отдел 2
Должность 3

Должность — конечный уровень иерархии в каждой ветке.

Создание оргструктуры — порядок

Рекомендуемый порядок создания оргструктуры с нуля:

  1. Типы орг.структуры (Администрирование → Пользователи и группы → Типы орг.структуры)
  2. Дерево орг.единиц (сверху вниз: компания → департамент → отдел → должность)
  3. Пометить руководящие должности (галочка «Руководитель» в настройках орг.единицы)
  4. Создать пользователей (Фамилия, логин, псевдоним, Email — обязательные)
  5. Привязать пользователей к должностям

Множественные орг.единицы

Пользователю можно назначить несколько орг.единиц, но только одна — основная (галочка «Основная» в профиле, подсвечивается жирным).

Группы

Типы групп

На практике используются три основных типа групп:

Тип Описание Управление составом
Связанная (организационная) Привязана к орг.единице Автоматически: участники = сотрудники орг.единицы. Ручное добавление невозможно
Обычная Произвольный набор пользователей Ручное добавление/удаление
Индивидуальная Один пользователь Для выдачи прав конкретному человеку

Системные группы

Несколько групп создаются и поддерживаются системой автоматически:

  • Все пользователи — все пользователи системы (автоматически)
  • Administrators — доступ к разделу администрирования

Внимание: системные учётки support, systemrobot, anonymous — не менять настройки, может привести к некорректной работе. Восстановление = сброс всех настроек.

Создание связанной группы

Администрирование → Пользователи и группы → Орг. структура → выбрать орг.единицу → «Связанная группа» = (Создать новую) → «Связать с группой».

Блок «Связь с орг. единицей» в свойствах группы

Варианты:

  • Одна группа для одной орг.единицы
  • Одна группа для всей ветки (рекурсивно включает дочерние)

Актуализация связанной группы

Состав связанной группы обновляется автоматически при добавлении/удалении пользователей из связанной орг.единицы. Ручное редактирование состава — через орг.единицу, не через группу.

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

Роли пользователей в задачах

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

Роль Описание Кратность
Заказчик Создал задачу Один на задачу
Исполнитель Назначен на исполнение Несколько, но ответственный — один
Подписчик Наблюдает, может комментировать, не исполняет Без ограничений
Акцептант Запрошена подпись Без ограничений

Изменение оргструктуры

Перемещение орг.единиц

При реорганизации (слияние отделов, переподчинение):

  • Перемещение орг.единицы = перемещение всех вложенных + связанных групп
  • Права, завязанные на связанную группу, сохраняются
  • После перемещения — проверить, что логика Smart-правил не сломалась (если привязаны к конкретным орг.единицам по ID)

Изменение команды

Кадровые изменения отражаются на группах и правах автоматически:

  • Добавление нового сотрудника: создать пользователя → привязать к должности → автоматически попадёт в связанные группы → автоматически получит права
  • Увольнение: деактивировать пользователя (не удалять — история задач сохраняется)
  • Перевод между отделами: сменить орг.единицу → автоматически сменятся группы → автоматически сменятся права

Ограничения оргструктуры

Уникальность имён

По умолчанию название орг.единицы должно быть уникально в рамках одного родителя (Name + ParentId). При попытке создать дубликат система выбрасывает ошибку OrgStructureUnits_NotUnique.

Однако это поведение управляется кастомной настройкой OrgStructure_AllowNonUniqueOrgUnitNames (по умолчанию false). Если включить — дубликаты разрешены.

На уровне БД ограничения уникальности на пару «название + родитель» нет — проверка выполняется только в приложении.

Удаление орг.единиц

Удаление орг.единицы с активными (не уволенными) пользователями невозможно. Система выбрасывает TCLogicException: «Невозможно удалить организационную единицу, поскольку в ней есть сотрудники».

Порядок действий при удалении:

  1. Уволенные пользователи автоматически открепляются от орг.единицы.
  2. Если остались активные пользователи — ошибка.
  3. Если пользователей нет — удаляются дочерние элементы и связанная группа.

При удалении родительской орг.единицы удаляются все дочерние элементы. Если нужно сохранить вложенные единицы — сначала перенесите их (измените поле «Входит в»), потом удаляйте родителя.

Обязательные поля при создании пользователя

Безусловно обязательные поля: орг.единица, логин, пароль.

Дополнительные обязательные поля определяются в Общих настройках приложения (блок «Обязательные поля профиля пользователя»): фамилия, дата рождения, псевдоним на русском, e-mail. Набор зависит от конфигурации конкретной инсталляции.