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

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

Руководство по настройке организационной структуры 1Формы — дерева подразделений и должностей компании. Администрирование: Администрирование → Оргструктура (/spa/administration/org-structure). Описаны типы орг. единиц, карточки единиц, массовые операции, справочник должностей, пользовательские настройки и SQL-диагностика.

Организационная структура — дерево подразделений и должностей компании. Настраивается в администрировании: Администрирование → Оргструктура (/spa/administration/org-structure). Здесь создаётся дерево единиц, задаются их типы и должности, к единицам привязываются пользователи и группы.

Страница оргструктуры: дерево подразделений, строка создания единицы и поиск

Настраивать оргструктуру можно несколькими способами:

Интерфейс Путь
Администрирование (AdminSPA) Администрирование → Оргструктура — /spa/administration/org-structure
Admin API /api/admin/org-structure/*

1. Типы орг. единиц

Таблица БД: dbo.OrgStructureType

Тип задаёт уровень и поведение орг. единицы. Поля типа:

Поле Назначение
Name Название типа (Филиал, Департамент, Отдел, Группа, Должность)
Order Числовой уровень — дочерний элемент должен иметь строго больший Order
IsPosition Признак «должность» — только один тип с этим флагом; элементы этого типа могут иметь Appointment
IsCommercialInfo, HideInUserInfo Флаги видимости

Типы настраиваются до создания оргструктуры.

Список типов оргструктуры: имя, уровень и признак «Является должностью»

Новый тип создаётся в форме с полями «Имя», «Уровень» и признаком «Является должностью».

Форма добавления нового типа орг.структуры

2. Орг. единицы

Таблица БД: dbo.OrgStructureUnit

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

Вкладки карточки единицы

Настройки:

  • Имя, Тип, Входит в (ParentId)
  • При выборе значения «Входит в» в списке доступны только организационные единицы, которые могут быть родительскими. Единицы типа с флагом IsPosition не показываются, потому что должности нельзя использовать как родительские узлы.
  • Порядковый номер типа (Order) сам по себе не определяет, может ли единица быть родительской. Для фильтрации используется именно признак IsPosition, поэтому в списке могут отображаться единицы с любым уровнем, если они не являются должностями.
  • Связанная группа (LinkedGroupId) — привязка к группе для автосинхронизации. У связанной группы поле «Название» в админке групп заблокировано (с 2.268.348): при переименовании орг.единицы имя связанной группы обновляется автоматически.
  • Должность (AppointmentId) — только для типа IsPosition
  • Является руководящей (IsDirector) — определяет руководителя подчинённых
  • Актуальность (IsActual) — неактуальные отображаются серым
  • Не показывать в оргструктуре (DoNotShowInOrgStructure)
  • Функциональная (IsFuncGroup)
  • Комментарий (Comment) — отображается под названием в UI
  • Цвет (Color)

Вкладка «Настройки» карточки орг. единицы: название, тип, родитель, связанная группа и флаги

Состав: список пользователей в данной единице (UserOrgStructureUnit).

Вкладка «Состав» карточки орг. единицы: список сотрудников

Должности: назначение должности из справочника OrgStructureAppointment.

Над поддеревом оргструктуры доступны массовые операции:

Операция API
Связать поддерево с группами POST /api/admin/org-structure/orgunit/{unitId}/link-sub-tree-with-group
Синхронизировать группы POST /api/admin/org-structure/syncgroups
Экспорт в Excel GET /api/admin/org-structure/export-to-excel?withUsers={bool}

Справочник должностей (dbo.OrgStructureAppointment) — простой справочник (ID, Name). Должность назначается конкретной орг. единице через хранимую процедуру SetAppointmentForOrgUnit.

Карточка типа «Должность»: имя, уровень и признак «Является должностью»

Пользовательские настройки, справочник должностей и SQL-диагностика

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

Настройка Что делает
OrgStructure_AllowNonUniqueOrgUnitNames Разрешить/запретить дубликаты имён в одной ветке (по умолчанию: разрешено)
CustomUserDirectorIds Ручное переопределение руководителя: userId1:directorId1,userId2:directorId2
customWorkersDictionarySP Пользовательская хранимая процедура (SP) вместо стандартного справочника сотрудников

SQL-диагностика — запросы для проверки состояния оргструктуры (выполняются в базе данных 1Ф):

-- Дерево единиц
SELECT Id, Name, ParentId, OrgStructureTypeId, LinkedGroupId, IsActual, IsDirector
FROM dbo.OrgStructureUnit
ORDER BY ParentId, Name;

-- Типы
SELECT * FROM dbo.OrgStructureType ORDER BY [Order];

-- Должности
SELECT * FROM dbo.OrgStructureAppointment;

-- Пользователи в оргструктуре
SELECT u.UserID, u.OrgStructureUnitId, u.IsPrimary, osu.Name
FROM dbo.UserOrgStructureUnit u
JOIN dbo.OrgStructureUnit osu ON osu.Id = u.OrgStructureUnitId;

-- Единицы без связанной группы (потенциальная проблема)
SELECT Id, Name
FROM dbo.OrgStructureUnit
WHERE LinkedGroupId IS NULL AND IsActual = 1;

-- Пользователи без основной единицы
SELECT UserID
FROM dbo.UserOrgStructureUnit
GROUP BY UserID
HAVING SUM(CASE WHEN IsPrimary = 1 THEN 1 ELSE 0 END) = 0;