Оргструктура — синхронизация¶
Оргструктуру можно наполнять и поддерживать несколькими способами. Эта страница описывает интеграции; детальная техническая спецификация AD sync: auth/ad-sync-technical-reference.md.
1. Синхронизация с Active Directory / LDAP¶
Архитектура¶
AD Server (LDAP)
└─ OU (Organizational Units)
└─ Users, Groups
↓ SyncAdController / ADSyncJob
SynchronizationProfiles
└─ SynchronizationProfilesADSettings
├─ SyncOrganizationUnits (флаг)
└─ SynchronizationProfilesADOrgUnits (фильтры OU)
↓
OrgStructureUnit ← UserOrgStructureUnit ← Users
Ключевые таблицы синхронизации¶
| Таблица | Назначение |
|---|---|
SynchronizationProfiles |
Профиль синхронизации (Id, SyncType, ServiceId, IsActive) |
SynchronizationProfilesADSettings |
Флаги: SyncUserData, SyncGroupData, SyncOrganizationUnits, MaximumADSyncRows, LDAP-фильтры |
SynchronizationProfilesADOrgUnits |
Фильтр OU: OrgUnitPath, OrgUnitName, IncludeNested |
LDAPServicesCredentials |
Креды подключения к домену |
ADPropertyMapping |
Маппинг атрибутов AD → поля 1Формы |
Как работает¶
- Профиль определяет домен и настройки: какие данные синхронизировать (пользователей, группы, оргструктуру).
- Фильтр OU (
SynchronizationProfilesADOrgUnits) определяет, из каких Organizational Units AD тянуть данные.IncludeNested— включать вложенные OU. - Маппинг свойств — блок «Рабочая информация» в ADPropertyMapping содержит динамические поля
OrgUnitType{Id}, связывающие атрибуты AD (department, title, division) с типами оргструктуры 1Формы. - SyncUserInternal() — при синхронизации пользователя обновляются его привязки к OrgStructureUnit через UserOrgStructureUnit.
Флаг SyncOnlyADEntity¶
При включённом SyncOnlyADEntity = true — синхронизируются только те элементы оргструктуры, которые существуют в AD. Элементы, созданные вручную в 1Форме, не затрагиваются.
API endpoints (SyncAd)¶
| Route | Назначение |
|---|---|
GET/POST /api/sync-ad/profiles/{profileId}/settings |
Настройки профиля |
GET /api/sync-ad/profiles/{profileId}/domain/folders-tree |
Дерево OU домена |
POST /api/sync-ad/profiles/{profileId}/domain/folder |
Содержимое конкретной OU |
POST /api/sync-ad/profiles/{profileId}/domain/unload-users |
Выгрузка пользователей из AD |
POST /api/sync-ad/link-users |
Привязка AD-пользователей по SID |
GET /api/sync-ad/profiles/{profileId}/sync-properties/blocks |
Блоки маппинга свойств |
POST /api/sync-ad/sync-properties/update |
Обновление маппинга |
Ограничения¶
- Иерархия AD должна быть ясной; тип AD-объекта маппится 1:1 на тип OrgStructureType
- Должность (IsPosition) обязательна в обеих системах
- PG: отсутствует SP
tc_NormalizeGroupUsersMembership(MSSQL-specific)
2. Синхронизация с 1С¶
Контроллер¶
OrgStructureSync1CConfigController (/api/admin/org-structure/1c-sync/...)
Механизм¶
- Создаётся XML-конфигурация маппинга полей 1С ↔ 1Форма
- Шаблон конфигурации:
GET /api/admin/org-structure/1c-sync/configs/default - Сохранение конфигурации:
POST /api/admin/org-structure/1c-sync/configs - Запуск синхронизации:
POST /api/admin/org-structure/1c-sync/sync
Поля связи в OrgStructureUnit¶
| Поле | Назначение |
|---|---|
GuidFrom1C |
GUID объекта в 1С |
ParentGuidFrom1C |
GUID родителя в 1С |
При синхронизации сопоставление идёт по GuidFrom1C.
3. Импорт из Excel / внешних источников¶
Excel-загрузка пользователей¶
Загрузка пользователей из файла Excel. При загрузке могут создаваться оргструктурные единицы.
Импорт данных¶
Через механизм импорта (data_import.md):
- Ручной импорт или автоматический по расписанию
- Внешний источник → OrgStructureUnit (через ExternalID / ParentExternalID)
Поля связи для импорта¶
| Поле | Назначение |
|---|---|
ExternalID |
ID из внешней системы |
ParentExternalID |
ID родителя из внешней системы |
IsImported (UserOrgStructureUnit) |
Признак: привязка пользователя создана импортом |
4. Ручное создание¶
Через UI администратора или Admin API: - Создание дерева единиц сверху вниз - Назначение типов, должностей - Привязка пользователей - Связывание с группами
Последовательность: типы → дерево → должности → пользователи → группы.