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

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

Оргструктуру можно наполнять и поддерживать несколькими способами. Эта страница описывает интеграции; детальная техническая спецификация 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Формы

Как работает

  1. Профиль определяет домен и настройки: какие данные синхронизировать (пользователей, группы, оргструктуру).
  2. Фильтр OU (SynchronizationProfilesADOrgUnits) определяет, из каких Organizational Units AD тянуть данные. IncludeNested — включать вложенные OU.
  3. Маппинг свойств — блок «Рабочая информация» в ADPropertyMapping содержит динамические поля OrgUnitType{Id}, связывающие атрибуты AD (department, title, division) с типами оргструктуры 1Формы.
  4. 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/...)

Механизм

  1. Создаётся XML-конфигурация маппинга полей 1С ↔ 1Форма
  2. Шаблон конфигурации: GET /api/admin/org-structure/1c-sync/configs/default
  3. Сохранение конфигурации: POST /api/admin/org-structure/1c-sync/configs
  4. Запуск синхронизации: 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: - Создание дерева единиц сверху вниз - Назначение типов, должностей - Привязка пользователей - Связывание с группами

Последовательность: типы → дерево → должности → пользователи → группы.