Пользователи и группы¶
Администрирование пользователей и групп покрывает полный жизненный цикл учётных записей, групп, оргструктуры, ролей и прав доступа. Настройки распределены по трём механизмам: автоадминка (14 форм над таблицами БД), EntityEditor (6 JSON-схем) и специализированные Admin API контроллеры (11 маршрутов). Документ содержит 22 раздела с пошаговыми процедурами — от создания пользователя до синхронизации с AD/LDAP, включая детальную настройку рабочих мест групп (45 полей, 7 элементов панели, 6 блоков бокового меню), типичные ошибки конфигурации и SQL-диагностику.
Обзор¶
Раздел «Пользователи и группы» в администрировании отвечает за учётные записи сотрудников, группы и их права, а также за организационную структуру компании. Здесь настраивается:
- жизненный цикл пользователя (создание, профиль, увольнение, восстановление, экспорт);
- структуру и типы групп, вложенность и доменные ограничения;
- организационную структуру (подразделения, должности, связи с группами);
- рабочие места групп (
UserGroupSettings) и дефолты для новых пользователей; - роль-модель (
roles/rolePowers/roleUser).
Домен использует все три механизма администрирования:
- автоадминка (
dbadmin) для конфигурационных таблиц; - EntityEditor (JSON-схемы) для ролей/типов/настроек;
- специализированные Admin API контроллеры для операций, где CRUD-формы недостаточно.
Техническая реализация runtime и сервисной логики описана в docs/domains/users-and-groups/backend.md.
В этом документе фокус только на настройках и диагностике мисконфигураций.
Как открыть администрирование¶
Режим администрирования открывается из персонального меню — клик по аватару в панели навигации → пункт «Админ». Пункт доступен только участникам группы администраторов. Настройки этого домена находятся в разделах административного меню «Пользователи и группы», «Группы» и «Рабочее место».
Что администратор делает сам, а что — через поддержку 1Ф. Через интерфейс администратор управляет пользователями, группами и правами, оргструктурой, рабочими местами групп, синхронизацией с AD/LDAP и импортом. Правки на уровне платформы (код, смарт-логика ядра) и операции с БД, не описанные в этом руководстве, выполняются через поддержку 1Формы.
К настройкам конкретного пользователя можно перейти и из пользовательского режима — по кнопке-шестерёнке «Перейти в администрирование пользователя» рядом с его именем в профиле.

⚠️ Не меняйте настройки системных учётных записей
support,systemrobot,anonymous— это может нарушить работу системы. Восстановление такой записи сбрасывает все её настройки.
Механизмы администрирования¶
Настройки домена доступны через три механизма: автоадминку (формы над таблицами БД), EntityEditor (редактирование справочников по JSON-схемам) и специализированные Admin API контроллеры. Ниже — карта форм, схем и контроллеров.
Автоадминка (dbadmin)¶
Перечень форм автоадминки с указанием целевой таблицы БД, числа полей и зависимостей.
| Alias формы | Название | Таблица БД | Полей | Секций | Deps |
|---|---|---|---|---|---|
users |
Пользователи | dbo.Users |
150 | 4 | см. AdminFormSectionColumnsDeps |
groups |
Группы | dbo.Groups |
10 | 1 | см. AdminFormSectionColumnsDeps |
workplaces |
Рабочие места | dbo.UserGroupSettings |
45 | 5 | см. AdminFormSectionColumnsDeps |
users-new-default-settings |
Настройки по умолчанию¹ | dbo.UsersNewDefaultSettings |
38 | 5 | см. AdminFormSectionColumnsDeps |
org-structure |
Орг.структура | dbo.OrgStructureUnit |
19 | 2 | см. AdminFormSectionColumnsDeps |
org-structure-type |
Типы орг.структуры | dbo.OrgStructureType |
8 | 1 | см. AdminFormSectionColumnsDeps |
org-structure-appointment |
Должности | dbo.OrgStructureAppointment |
4 | 1 | см. AdminFormSectionColumnsDeps |
rooms |
Список комнат | dbo.Rooms |
3 | 1 | — |
group-parents |
Состав группы | dbo.GroupParents |
4 | 1 | — |
group-domain-access |
Доступ к доменам | dbo.GroupDomainAccess |
6 | 1 | — |
group-users-membership |
История членства | dbo.GroupUsersMembership |
5 | 1 | — |
special-permissions |
Специальные права | dbo.GroupSpecialPermissions |
4 | 1 | — |
user-info-ext-values |
Расширенные свойства пользователя | dbo.UserInfoExtValues |
7 | 1 | — |
add-user |
Создать пользователя | dbo.SummaryCategories |
5 | 1 | — |
¹ Форма users-new-default-settings заменена на пользовательскую: позволяет выбирать группы пользователей в поле «Применить к группам» и массово применять настройки в трёх режимах (Notifications / Settings / All). Кнопка «Применить» неактивна без выбранной группы.
EntityEditor¶
Справочники домена, редактируемые через EntityEditor по JSON-схемам.
| Схема JSON | Таблица | Handler/контур |
|---|---|---|
roles.json |
dbo.Roles |
EntityModel + api/admin/entityModel |
rolePowers.json |
(связи полномочий ролей) | EntityModel + api/admin/entityModel |
roleUser.json |
(связи ролей и пользователей) | EntityModel + api/admin/entityModel |
groupType.json |
dbo.GroupTypes |
EntityModel + api/admin/entityModel |
userSettings.json |
dbo.UserSettings |
EntityModel + api/admin/entityModel |
userInfoExt.json |
(расширенные свойства пользователя) | EntityModel + api/admin/entityModel |
Admin API контроллеры¶
Специализированные контроллеры Admin API, обеспечивающие операции, недоступные через автоадминку.
| Контроллер | Маршрут | Методы (укрупненно) | Назначение |
|---|---|---|---|
/api/admin/users |
/api/admin/users |
POST, GET, POST /{id}/fire, POST /{id}/unfire, POST /{id}/sync-with-ad |
создание/удаление/увольнение, перенос задач, синхронизация |
UsersExportController |
/api/admin/users/export |
POST /excel |
выгрузка пользователей |
UsersProfilesController |
/api/admin/users/{userId}/profile |
POST |
обновление профиля |
UserAssistantsSettingsController |
/api/admin/userassistants/settngs |
GET, POST /save |
настройки заместителей |
UserNewDefaultSettingsController |
/api/admin/users/default |
GET/POST notifications, GET/POST settings, POST apply-to-groups |
дефолты новых пользователей; apply-to-groups — массовое применение настроек к выбранным группам (режимы All / Settings / Notifications) |
GroupsController |
/api/admin/groups/ |
GET/POST, update, delete, membership операции |
CRUD групп, состав, иерархия, AD sync |
UserGroupSettingsController |
/api/admin/user-group-settings |
my-tasks-config, user-ui-settings, includes, reset |
управление РМГ (UserGroupSettings) |
GroupOnEntityPermissionsController |
/api/admin/permissions |
actions, get/set permissions, tsql-access-function |
матрица прав групп по сущностям |
EntityAccessController |
/api/admin/entity-access |
get/save, subcategory, allowedValueGroups |
тонкая матрица доступов |
/api/admin/org-structure |
/api/admin/org-structure/ |
дерево, CRUD оргюнитов, связи с группами, sync | оргструктура и привязки |
Ключевые настройки¶
1. Создание пользователя¶
В интерфейсе: Администрирование → Пользователи → «Создать пользователя». Безусловно обязательные поля — орг.единица, логин, пароль; дополнительный набор (фамилия, псевдоним, e-mail, дата рождения) задаётся в Общих настройках приложения, блок «Обязательные поля профиля пользователя».
Где настраивается:
- автоадминка → форма
add-user; - Admin API →
POST /api/admin/users; - defaults → маршрут
/api/admin/users/default.

Таблицы:
dbo.Users;dbo.UsersNewDefaultSettings;- связанные настройки в
dbo.UserSettings.
Что контролируется:
- обязательный набор атрибутов карточки пользователя;
- применение дефолтов уведомлений/интерфейса;
- первичные связи с группой/оргструктурой.
Критичные зависимости:
- дефолты читаются из
users-new-default-settingsи API/api/admin/users/default/*; - после создания часто требуется отдельная настройка ролей (
roleUser) и расширенных свойств (userInfoExt).
SQL-диагностика:
select top (50) *
from dbo.Users;
select top (50) *
from dbo.UsersNewDefaultSettings;
2. Профиль пользователя¶
В интерфейсе: Администрирование → Пользователи → выбрать пользователя → карточка «Редактирование пользователя» (блоки Лицензии, Рабочее, География, Фото, Личное, Контакты, Прочее).

Где настраивается:
- автоадминка →
users,user-info-ext-values; - EntityEditor →
userInfoExt.json; - Admin API →
POST /api/admin/users/{userId}/profile.
Таблицы:
dbo.Users;dbo.UserInfoExtValues;dbo.UserSettings.
Что контролируется:
- ФИО и контактные поля;
- доп. атрибуты карточки (в т.ч. пользовательскые);
- профильные/персональные параметры UI.
Критичные зависимости:
- набор отображаемых полей зависит от конфигурации схемы EntityEditor;
- при массовом обновлении через формы и API важна согласованность типов и required-логики.
SQL-диагностика:
select top (100) *
from dbo.UserInfoExtValues;
select top (100) *
from dbo.UserSettings;
Приватность даты рождения и активность:
| Ключ / объект | Назначение |
|---|---|
HideBirthYear |
Скрывает от других пользователей только год рождения |
HideBirthDate |
Полностью скрывает дату рождения для других. Доступен пользователю для изменения всегда, даже если администратор запретил редактирование блока «Личное» (CanEditPrivateInfo = false). Для администраторов дата рождения остаётся видна |
dbo.UserActivityInSystem, Users.LastOnlineTime |
Фиксация активности пользователя (время последнего входа в систему) |
Действие «Запросить согласие на обработку персональных данных повторно» (с 2.268.339). В карточке пользователя AdminSPA (вкладка профиля, блок служебных действий) доступна кнопка, сбрасывающая флаг принятого согласия у выбранного пользователя — Users.IsAgreeToStorePersonalData → 0. При следующем входе пользователь снова увидит блокирующее окно подтверждения согласия. Действие вызывает POST /api/admin/users/{userId}/personal-data-consent/reset. Подробное описание самого окна согласия — в auth/business.md, раздел «Согласие на обработку персональных данных».
Вкладки карточки пользователя¶
Карточка пользователя открывается с набором вкладок: «Профиль», «Перс. настройки», «Группы», «Расширенные свойства», «Журнал», «Сервис» и «Прочее».
Вкладка «Группы» показывает все группы, в которых состоит пользователь, с переключателем членства; рядом — кнопки «Синхронизировать группы с AD», «История» и «Добавить».

В диалоге «Добавить группы» в поле выбирается одна или несколько групп для добавления пользователю.

Кнопка «История» открывает журнал членства: по каждой группе указан период «С … По …», включая завершённые членства.

Вкладка «Расширенные свойства» отображает значения дополнительных атрибутов пользователя: свойство, значение, порядок, числовое и логическое представление.

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

3. Увольнение пользователя (fire)¶
Где настраивается:
- Admin API →
POST /api/admin/users/{userId}/fire; - Admin API →
POST /api/admin/users/{userId}/firenow; - Admin API →
POST /api/admin/users/{userId}/unfire.

Таблицы/контур:
dbo.Users;- история членства:
dbo.GroupUsersMembership; - сопутствующие таблицы задач/подписок (по сценарию переназначения).
Что контролируется:
- queued/sync увольнение;
- переназначение задач;
- восстановление пользователя.
Критичные зависимости:
- увольнение и удаление пользователя — разные операции;
- при
fireважно корректно задать правила по задачам и группам.
Открытые вопросы уволенного (с 2.268.336). При увольнении UserFireService для каждого открытого входящего вопроса, где уволенный был реальным адресатом (cr.NeedsAnswer = 1, cr.HasToAnswer = 1), снимает только его флаг cr.HasToAnswer = false. Остальные реальные адресаты того же commentId сохраняют cr.NeedsAnswer = 1, cr.IsAnswered = 0, cr.HasToAnswer = 1 — для них вопрос остаётся открытым. Comments.IsAnswered = true ставится только если ни у одного другого адресата не осталось HasToAnswer = 1. Дополнительно служебный reply «адресат уволен» теперь публикуется во всех входящих уволенного, а не только в тех, где он был единственным адресатом, как было до 2.268.336. Подробнее — comments-needsanswer-isanswered-hastoanswerlogic.md § 2.7.1. До 2.268.336 из-за рассинхрона CommentRecipients фоновая процедура архивации через 30 дней могла переносить целые группы получателей в архив — фикс закрыл потерю открытых вопросов у коллег уволенного.
В диалоге увольнения выбирают, что сделать с группами, уведомлениями, ролями, подписями и активными задачами уволенного, и сразу переназначают исполнителя или заказчика. Кнопка «Уволить» ставит задание в очередь, «Уволить немедленно» выполняет операцию сразу.

SQL-диагностика:
select top (100) *
from dbo.GroupUsersMembership;
select top (100) *
from dbo.Users;
Вкладка «Сервис»: операции над учётной записью¶
На вкладке «Сервис» карточки пользователя собраны действия над учётной записью: копирование прав, подписание на задачи, перенос задач, назначение исполнителем, настройка заместителей, синхронизация с AD, а также увольнение и удаление.

«Копировать права» переносит на текущего пользователя выбранные настройки другого: автоподписку, уведомление о новых задачах, автоназначение исполнителем, активные подписи и орг. единицы.

«Подписать пользователя» массово подписывает выбранного пользователя или группу на задачи указанной категории — где он исполнитель, заказчик или подписчик.

«Перенос задач на другого пользователя» переназначает исполнителя и/или заказчика во всех задачах пользователя; при необходимости отписывает его от задач.

«Назначить исполнителем» добавляет выбранного пользователя или группу соисполнителем в задачи, где исполнителем является текущий пользователь.

«Заместители» задаёт пользователей, замещающих сотрудника в задачах на время его отсутствия.

4. Группы и иерархия¶
В интерфейсе: Администрирование → Группы. Здесь создаются группы, задаётся тип, состав участников и вложенность (вкладка состава / «Входит в»). Права на категории и межгрупповые права настраиваются на вкладках самой группы.
Где настраивается:
- автоадминка →
groups,group-parents; - EntityEditor →
groupType.json; - Admin API →
/api/admin/groups/*.

Таблицы:
dbo.Groups;dbo.GroupParents;dbo.GroupTypes.
Что контролируется:
- свойства группы;
- тип группы (поведение в интерфейсе/получателях);
- вложенность и наследование прав.

Критичные зависимости:
- вложенные группы расширяют effective-permissions;
- невалидная иерархия приводит к избыточному или недостаточному доступу.
SQL-диагностика:
select top (100) *
from dbo.Groups;
select top (100) *
from dbo.GroupParents;
Управление составом и копиями группы¶
Вкладка «Состав» группы показывает её участников — пользователей и вложенные группы.

Отмеченные строки удаляют кнопкой «Удалить выбранное».

«Скопировать права и связи» переносит на текущую группу права и связи другой группы — источник указывается по названию или ID.

«Создать дубль группы» создаёт копию группы со всеми настройками и правами под новым названием.

5. Рабочие места группы (UserGroupSettings)¶
В интерфейсе: Администрирование → Рабочее место. Рабочее место задаёт интерфейс и стартовую страницу для участников группы; полный набор параметров — в разделе 13.
Где настраивается:
- автоадминка →
workplaces; - Admin API →
/api/admin/user-group-settings/*.

Таблица:
dbo.UserGroupSettings(45 полей, 5 секций).
Что контролируется:
- UI/UX для группы;
my-tasks-configиuser-ui-settings;- includes (CSS/JS) и chat-subcategories.
Критичные зависимости:
- группа может переопределять пользовательские настройки;
- конфликт РМГ при членстве в нескольких группах влияет на итоговый UI.
SQL-диагностика:
select top (100) *
from dbo.UserGroupSettings;
select count(*) as Cnt
from dbo.UserGroupSettings;
6. Настройки по умолчанию для новых пользователей¶
Где настраивается:
- автоадминка →
users-new-default-settings; - Admin API →
/api/admin/users/default/notificationsи/settings.

Таблица:
dbo.UsersNewDefaultSettings.
Что контролируется:
- стартовые уведомления;
- стартовые пользовательские settings;
- поведение при восстановлении уволенного пользователя.
Критичные зависимости:
- изменения не мигрируют автоматически старых пользователей;
- несогласованные дефолты создают дрейф конфигурации между «старыми» и «новыми» пользователями.
SQL-диагностика:
select top (100) *
from dbo.UsersNewDefaultSettings;
7. Оргструктура и должности¶
Выделено в отдельный домен: domains/org-structure/ — полная документация по слоям (business, admin, backend, database, data-flow, frontend, sync, ext-param-integration).
В интерфейсе: Администрирование → Пользователи и группы → Типы орг.структуры (уровни иерархии) и Орг. структура (дерево подразделений и должностей). Сначала настраивают типы, затем строят дерево.

Где настраивается:
- автоадминка →
org-structure,org-structure-type,org-structure-appointment; - Admin API →
/api/admin/org-structure/*.
Таблицы:
dbo.OrgStructureUnit;dbo.OrgStructureType;dbo.OrgStructureAppointment.
Что контролируется:
- дерево подразделений;
- типизация узлов;
- должности и связи с группами;
- sync group-membership из оргструктуры.
Критичные зависимости:
- ошибки связей unit↔group влияют на членство пользователей;
- смена типа/родителя узла может менять доступность потомков в UI.
SQL-диагностика:
select top (100) *
from dbo.OrgStructureUnit;
select top (100) *
from dbo.OrgStructureType;
select top (100) *
from dbo.OrgStructureAppointment;
8. Роли (roles / powers / users)¶
Где настраивается:
- EntityEditor →
roles.json,rolePowers.json,roleUser.json; - дополнительная проверка через API прав (
/api/admin/permissions,/api/admin/entity-access).
Таблицы/контур:
dbo.Roles;- таблицы связей ролей и полномочий;
- таблицы связей ролей и пользователей.
Что контролируется:
- справочник ролей;
- набор полномочий роли;
- назначение ролей пользователям.
Критичные зависимости:
- назначение роли без набора powers не дает ожидаемого эффекта;
- роль может конфликтовать/дополняться групповыми правами.
SQL-диагностика:
select top (100) *
from dbo.Roles;
9. Доступ к доменам¶
Где настраивается:
- автоадминка →
group-domain-access; - групповой контур API (
/api/admin/groups/domains).

Таблица:
dbo.GroupDomainAccess.
Что контролируется:
- привязка групп к доменам (в т.ч. AD/LDAP-контур);
- разрешенная область аутентификации/синхронизации.
Критичные зависимости:
- некорректный domain mapping ломает ожидания по входу/синхронизации;
- требуется проверка настроек синхропрофилей.
SQL-диагностика:
select top (100) *
from dbo.GroupDomainAccess;
10. Специальные права¶
В интерфейсе: Администрирование → Группы → выбранная группа → вкладка «Специальные права». Спецправа выдаются группе и действуют на всех её участников.
Где настраивается:
- автоадминка →
special-permissions; - API прав →
/api/admin/permissions.
Таблица:
dbo.GroupSpecialPermissions.
Что контролируется:
- точечные special-actions для групп;
- исключения из стандартной ролевой модели.
Критичные зависимости:
- спецправо может обходить базовые ожидания UI/доступа;
- проверять в связке с membership группы и entity-access.
SQL-диагностика:
select top (100) *
from dbo.GroupSpecialPermissions;
Известные спецдействия (мнемоники):
| Мнемоника | Описание |
|---|---|
VIEWORGSTRUCTITEMSINCONTACTS |
Видеть оргструктуру (должность/подразделение) в карточке/справочнике сотрудников |
PROHIBITIONVIEWMOBILEPHONES |
Запрет на просмотр любых мобильных телефонов (инвертированное право) |
NOTVIEWUSERINFO |
Запрет на просмотр общей информации о пользователе (инвертированное право) |
VIEWEMPLOYEESHIDDENINFOCELLPHONE |
Видеть скрытый мобильный телефон — пробивает флаг Users.RestrictCellPhoneView = 1. Применяется в dbo.tc_workersdictionary (справочник сотрудников). Полное название в UI: «Видеть скрытую информацию пользователей/сотрудников в контактах (ФИО, кабинет, компьютер, поиск уволенных)». Введено в задаче #2080210 (v2.267) |
VIEWGENERALINFORMATION |
Видеть общую информацию пользователей. Используется в каскадных фильтрах справочника (см. @CanViewUserInfoF) и в API поиска контактов /app/v1.0/api/mobile/users/search — пользователи без IsEmployee видят в результатах только тех, на чьи группы у них есть это межгрупповое право (см. groups-visibility-auto-creation.md § Видимость в API поиска контактов) |
Резолв спецдействия в коде:
-- через функцию dbo.HasUserSpecialAction(@UserId, 'MNEMO')
declare @HasViewHiddenCellPhoneF bit;
select @HasViewHiddenCellPhoneF = ViewHiddenCellPhone.HasActionF
from dbo.HasUserSpecialAction(@UserID, 'VIEWEMPLOYEESHIDDENINFOCELLPHONE') ViewHiddenCellPhone;
Подробнее о применении VIEWEMPLOYEESHIDDENINFOCELLPHONE в справочнике сотрудников — business.md «Справочник сотрудников» (раздел про сокрытие номера телефона).
11. Синхронизация с AD/LDAP¶
Где настраивается:
- маршруты
/api/admin/groups/ad/sync-all-groups,/api/admin/groups/domains; /api/admin/users:/api/admin/users/{userId}/sync-with-ad;- профильные настройки групп/пользователей в админ-формах.
Контур данных:
- групповые и пользовательские записи;
- доменные привязки;
- sync-профили интеграции.
Что контролируется:
- наполнение пользователей/групп из внешнего каталога;
- согласованность membership в локальной БД.
Критичные зависимости:
- без корректной конфигурации домена и профиля синхронизация частично успешна;
- после sync требуется сверка фактического состава групп.
SQL-диагностика:
select top (100) *
from dbo.Groups;
select top (100) *
from dbo.GroupUsersMembership;
Автоматическое увольнение при деактивации в AD — три способа:
- Перемещение в OU уволенных (
distinguishedName): пользователь переносится в подразделение уволенных (например,OU=Dismissed Users). Расширенное свойствоdistinguishedNameмаппится из AD; публикация + задание по таймеру увольняет по SQL-условиюUserInfoExtValues.Value LIKE '%OU=Dismissed Users%'. - Группа деактивации: в 1Ф создаётся группа, синхронизированная с AD-группой уволенных; циклическое смарт-расписание увольняет её членов.
- Признак отключённой записи (
userAccountControl): параметр синхронизируется в расширенное свойство. Битовая маска:514= NORMAL + DISABLE,66050= NORMAL + DONT_EXPIRE + DISABLE. Смарт-расписание увольняет пользователей сUserInfoExtValues.IntValue IN (514, 66050). Используется при отсутствии групп уволенных в AD.
12. Комнаты (Rooms)¶
Где настраивается:
- автоадминка →
rooms.

Таблица:
dbo.Rooms.
Что контролируется:
- справочник переговорных/комнат;
- использование в календарных и бронировочных сценариях.

Критичные зависимости:
- дубликаты/неактивные записи приводят к ошибкам выбора комнаты в UI.
SQL-диагностика:
select top (100) *
from dbo.Rooms;
13. Рабочие места групп — детальная настройка¶
Базовая архитектура и таблицы описаны в разделе 5. Здесь — полный набор параметров и правила их взаимодействия.
Приоритет: каждое рабочее место имеет целочисленный приоритет. При членстве пользователя в нескольких группах с разными настройками применяется рабочее место с наибольшим приоритетом. Личные настройки пользователя (профиль → вкладка «Вид» → блок «Стартовая страница») имеют наивысший приоритет.
Стартовая страница¶
Задаёт страницу, открывающуюся сразу после входа пользователя в систему.
| Тип | Описание | Поле «Значение» |
|---|---|---|
| Портал | Открывается портальная страница | Номер портала |
| Лента | Лента задач и комментариев | — |
| Ссылка | Открывается указанная страница (только HTTPS; во фрейме с сохранением меню) | URL |
Основная панель — 7 элементов¶
Каждый элемент: Показывать / Не показывать / Не задано (наследуется от более приоритетного РМ). Управляет иконкой на основной панели и вкладкой в общем поиске.
| Элемент | При скрытии |
|---|---|
| Кнопка создания | Скрыта кнопка «Создать» |
| Календарь | Скрыта вкладка календаря в поиске |
| Лента | Скрыта вкладка ленты в поиске |
| Сотрудники | Скрыта вкладка сотрудников в поиске, результаты по профилям отсутствуют |
| Поиск | Скрыта иконка поиска |
| Выбор языка | Скрыт переключатель языка |
| Чаты | Скрыта иконка чатов |
Панель навигации¶
Параметры управляют расположением, цветовым оформлением и режимом отображения панели навигации.
| Параметр | Значения |
|---|---|
| Положение | Сверху / Справа / Слева |
| Цвет | 15 вариантов: Нет / Бренд / Белый / Чёрный / Всегда белый / Всегда чёрный / Красный / Розовый / Фиолетовый / Синий / Голубой / Зелёный / Жёлтый / Оранжевый / Серый |
| Отображать всегда | Принудительно показывает панель навигации |
⚠️ Настройки положения, цвета и «Отображать всегда» применяются только для новых пользователей. Для существующих — использовать кнопки «Сбросить Положение», «Сбросить Цвет», «Сбросить Отображать всегда» после сохранения РМ.
Боковое меню — 6 блоков¶
Каждый блок: Показывать / Не показывать / Не задано.
| Блок | Спецправо с высшим приоритетом |
|---|---|
| Категории | «Не видеть блок Категории в левом меню» |
| Избранное | — |
| Отчёты | «Не видеть блок Отчеты в левом меню» |
| Почта | «Не видеть блок Почта в левом меню» |
| Пространства | — |
| Лента корп. сети | — |
⚠️ Специальные права группы имеют высший приоритет над настройками РМ для блоков Категории, Почта, Отчёты.
Критичный эффект скрытия Избранного и Категорий:
- Избранное скрыто, Категории доступны → заголовок «Избранное» заменяется на «Категории», кнопка добавления избранного недоступна;
- Скрыты оба блока → остаются только блоки ссылок РМ, заголовок «Избранное», кнопка добавления отсутствует;
- Если в РМ не настроено ссылок → только папка «Мои задачи».
Просмотр задачи¶
Снизу справа / Во всплывающем окне. ⚠️ Только для новых пользователей; для существующих — кнопка «Сбросить Просмотр задачи».
Функции Диска¶
Один флаг управляет: пунктом «Диск» в меню сервисов, пунктом «Диск» в меню «Файлы» карточки задачи, и действиями с ДП «Файл», связанными с Диском.
Приоритет режима редактирования¶
Включает инлайн-редактирование в табличном представлении (double-click → редактирование ячейки). Пользователь может переключить режим для отдельной категории через панель инструментов табличного вида. Точечное управление — опция «Приоритетный режим таблицы» в настройках таблицы БИ.
Разрешить кастомизировать UI¶
При отключении блокируется 7 настроек интерфейса: положение/цвет шапки, формат дат, режим комментариев, блочные сообщения, режим задач, отображение имён. Остаётся только выбор темы. ⚠️ Только для новых пользователей; для существующих — кнопка «Сбросить UI-настройки».
Персональное меню¶
Видимость пункта «Табель трудозатрат»: Не задано / Показывать / Не показывать.
Профиль пользователя — 7 вкладок¶
Каждая вкладка: Не задано / Показывать / Не показывать. Вкладки: Заказчик, Исполнитель, Комментарии, Календарь, Журнал, Трудозатраты, Отчёт.
Настройки интерфейса¶
Детальный контроль — какие опции настроек интерфейса видны пользователю. При отключении всех — пункт «Настройки интерфейса» скрывается из персонального меню.
Мои задачи в избранном¶
Детальный контроль содержимого блока «Мои задачи». При отключении всех — блок скрывается.
JS/CSS вставки¶
Групповые JS/CSS-вставки применяются ко всей площадке включая навигацию. При нескольких рабочих местах применяются вставки РМ с наибольшим приоритетом.
Дополнительные категории чатов¶
Добавляет вкладки в разделе чатов для конкретных категорий. Располагаются после стандартных системных разделов.
Удаление РМ¶
Запрещено для групп с настроенными рабочими местами. Сначала удалить РМ, потом группу.
14. Избранное группы (UserLinks)¶
Форма автоадминки
favourites(таблицаdbo.UserLinks) описана в ../spaces/admin.md — там же конфигурация SPA-страницы/administration/favorites-groups. Здесь — административные правила и типы ссылок.
В интерфейсе: Администрирование → «Избранное группы». На странице — список групп с их наборами избранного; по кнопке «+ Добавить» настраивается избранное для выбранной группы.

Общие правила:
- Один набор избранного на группу; пользователь в нескольких группах видит все наборы;
- Папки с одинаковым именем из разных групп объединяются (без дублирования ссылок);
- Допускается только 1 уровень вложенности — папки + ссылки в них;
- Пустые папки не отображаются в UI.
Блок кнопок¶
Максимум 4 кнопки. Типы объектов — те же, что у блока ссылок. Порядок отображения задаётся полем Order (int) в DTO создания/обновления кнопки (CreateFavoriteButtonRequestDto.Order, задача #2089245) — кнопки сортируются по возрастанию.
Приоритет иконок: имя иконки из spa/content-icons → иконка аватара категории → стандартная.
Блок ссылок — 14 типов¶
Каждая ссылка в блоке настраивается на один из следующих типов объектов.
| Тип | Параметры |
|---|---|
| Категория | ID категории + представление: Лента, Таблица, Календарь, Сводка, Ганта, Переписка, Иерархия, Канбан, Чаты, Канал, Ресурсы, Галерея, Соц. сети (14 представлений) |
| Раздел | ID раздела + те же 14 представлений |
| Новая задача | ID категории → карточка создания задачи |
| Отчёт | ID отчёта |
| Сводный раздел | ID сводного раздела |
| Портал | ID портала |
| Ссылка | Произвольный URL |
| Смарт-отбор | ID категории (с преднастроенными смарт-выражениями) |
| Пространство | Главная страница / конкретное пространство / страница пространства |
| Диск | Главная страница / папка диска |
| Календарь | Мой календарь / Мои события / Календарь другого пользователя |
| Чат | Раздел чатов / конкретный чат |
Специальный тип «Все разделы»: linkedObjectId = null — показывает полный каталог разделов внутри блока Избранного. Позволяет разместить каталог выше личного избранного без перехода в пункт «Категории». После добавления стандартный блок «Категории» можно скрыть в РМ.
Имя группы избранного¶
Все созданные ссылки оборачиваются в именованную папку под «Мои задачи». Задаётся через меню действий группы избранного. Локализация названия папки — 10 языков (ru/en/fr/de/zh/da/ja/es/it/uz).
Пользовательскые счётчики¶
Таблица UserLinksCustomCounters: поля allTasksCount, newTasksCount, overdueTasksCount. Заполняются вручную (смарт-выражение/расписание). При значении 0 счётчик не отображается.
Доступ из UI¶
Администратор может перейти к настройке избранного через ПКМ на блок кнопок в пользовательском интерфейсе.
⚠️ При добавлении ссылки на категорию право «Просмотр всех задач» должно быть и у группы, и у настраивающего администратора.
15. Синхронизация AD/LDAP — параметры профиля¶
Техническая реализация синхронизации (архитектура, классы, точки входа, SID-линковка, фильтры, инвалидация токенов) описана в ../auth/ad-sync-technical-reference.md — 387 строк. Здесь — административные параметры профиля синхронизации.
⚠️ КРИТИЧНО: для каждого сервиса AD/LDAP — только одна активная настройка синхронизации.
Флаги синхронизации (10+ параметров)¶
Флаги определяют, какие данные синхронизируются из AD/LDAP и в каком режиме.
| Параметр | Назначение |
|---|---|
| Синхронизация с AD | Включает синхронизацию по расписанию ADSyncJob |
| Данные пользователей | Синхронизация данных пользователей по маппингу |
| Названия групп | Синхронизация названий групп |
| Создание новых групп | Автосоздание групп из AD |
| Членство пользователей | Синхронизация состава групп |
| Вложенность групп | Синхронизация связей групп |
| Создавать пользователей из AD | Автосоздание новых пользователей |
| Создавать по расписанию | Автосоздание по ADSyncJob (требует указания OU) |
⚠️ Создание по расписанию возможно только при указании орг. единиц в «Организационные единицы для синхронизации из AD». Без OU — проверяются пользователи по всей оргструктуре.
Формат логинов и оргструктура¶
Параметры задают формат логинов и режим обработки орг. единиц при синхронизации.
| Параметр | Описание |
|---|---|
| Логины в формате Domain\Nick | Необходим при нескольких доменах с совпадающими никами |
| Только орг. единиц из AD | Вкл: затираются только AD-единицы, ручные сохраняются. Выкл: все орг. единицы перезаписываются |
LDAP-фильтры¶
LDAP-фильтры позволяют ограничить набор пользователей и групп, попадающих в синхронизацию.
| Параметр | Ограничение |
|---|---|
| AD фильтр пользователей | Синтаксис LDAP-фильтров; макс. 1000 символов |
| AD фильтр групп | Синтаксис LDAP-фильтров |
Пример фильтра пользователей: (|(company=1Forma)(city=Moscow))
Защита от массовых обновлений¶
Максимально допустимое количество обновлений — при превышении синхронизация не выполняется. Можно запустить вручную.
Маппинг полей¶
Встроенные поля уже вшиты. Пользовательскые добавляются вручную.
⚠️ Имена атрибутов AD регистрозависимые: displayname ≠ DisplayName.
Пример маппинга: Компания=company, Отдел=department, Имя=givenName, Псевдоним=displayName, E-mail=mail.
Аватар: атрибут AD = thumbnailPhoto.
Часовой пояс: требуется отдельное поле в AD специального формата (см. TimeZones.txt); привязать в настройках маппинга.
Расширенные свойства пользователя маппируются отдельной вкладкой.
Оптимизация¶
Пользовательская настройка LDAP_AdGlobalCatalogHosts (sys_user) — для ускорения загрузки дерева AD при медленном Global Catalog.
16. Типы групп¶
Полное описание в бизнес-слое: business.md. Здесь — административные параметры.
Тип группы задаёт её поведение в интерфейсе:
| Тип | Назначение |
|---|---|
| Организационная | Отображается в профилях и меню «Контакты» |
| Служебная | Скрыта от пользователей, для администрирования |
| Индивидуальная | Аналог служебной, состоит из одного пользователя |
| Auto managed membership | Служебная для миграции; нельзя редактировать состав, удалить, связать с орг.единицей |

Системные служебные группы: Administrators, Users, External — нельзя удалять и переименовывать.
Настраиваемые свойства типа:
- Можно добавлять в адресаты
- Отображать в карточке пользователя
- Отображать в дереве сотрудников
- Разрешить ставить отсутствие членам своей группы
- Не копировать членство при копировании прав пользователя
17. Связи групп¶
Связи расширяют сферу поиска контактов и доступа к календарям. Пользователь видит во вкладке «Сотрудники» членов своих неслужебных групп + членов связанных групп.
⚠️ Связываемая группа должна быть организационной.
Администраторы и пользователи с ролью «HR-менеджер» видят всех пользователей.
18. Импорт пользователей из Excel¶
Минимальный набор полей:
| Поле Excel | Столбец Users |
Обязательность |
|---|---|---|
| Логин | Nick |
Да |
| Отображаемое имя | DisplayName |
Да |
| Полное имя (ФИО) | FullName |
Да |
| Фамилия | LastName |
Да |
| Имя | FirstName |
Да |
| Телефон | Phone |
Да (формат: 7xxxxxxxxxx) |
| Отчество | MiddleName |
Нет |
| Дата рождения | BirthDate |
Зависит от настроек |
| Почта | Email |
Зависит от настроек |
Полный список импортируемых полей — таблица Users.
Процедура: импорт через SQL Server Import Data Wizard → вставка из временной таблицы в Users. После импорта требуется генерация временных паролей и добавление в группы.
Обратная операция — выгрузка: над реестром «Пользователи» доступна кнопка «Выгрузить в Excel»; флажок «Показать только неуволенных пользователей» исключает из выгрузки уволенных.

19. Обновление имён¶
Кнопка «Обновить имена» в интерфейсе администрирования — применяется после изменения настроек отображения имён (форматов, полей) для применения ко всем пользователям.
20. Журнал событий пользователя¶
Вкладка «Журнал» в карточке пользователя. Фиксируются:
- Вход в систему и выход;
- Изменение пароля;
- Изменение профиля;
- Изменение расширенных свойств;
- Изменение персональных настроек отображения.
Каждая запись: дата/время, текст события, User Agent. ⚠️ Пустой User Agent — браузер не распознан или мобильное приложение без идентификатора.
По умолчанию отображается ограниченный период. Фильтр по дате — в поле над таблицей.
21. Права группы на группу¶
Полное описание и администрирование: ../permissions/admin.md. Бизнес-правила: business.md.
5 типов прав: перевоплощение, просмотр журналов, просмотр календарных событий, просмотр профилей, установка фото пользователя.

В режиме «По правам» тот же экран показывает, каким группам выдано выбранное право.

22. Профиль пользователя — поля карточки¶
Бизнес-логика полей и вкладок: business.md. Здесь — административный справочник полей.
Блок «Личное»: Логин, Пароль, ФИО, Псевдонимы (рус/англ), Язык интерфейса, Пол, Декретный отпуск, «О себе».
Блок «Рабочее»: Орг.единицы (должности, одна основная), Дата «В компании с».
Блок «География»: Часовой пояс, Страна, Город, Комната, Геолокация.
Блок «Контакты»: Мобильный (с верификацией по SMS), Рабочие телефоны (до 3), Дополнительный, Факс, IP-телефония, E-mail, Внешний e-mail, Внешнее имя, Telegram ID и ник, Facebook, WhatsApp.
Блок «Прочее»: SID (из AD), Провайдер аутентификации, Заметки, Домен пользователя, 1С GUID.
Пользовательскые поля: через ключ userProfileInfoExts — JobTitle, Zoom и др.
Флаги доступа к редактированию профиля: Может редактировать аватар/пароль/Личное/Рабочее/География/Контакты, Разрешить кастомизировать UI, Разрешить менять режим отображения имён, Требовать акцепта всех своих задач, Доступ к почте.
Признак «Сотрудник компании» (IsEmployee)¶
Битовый флаг в Users.IsEmployee. Делит пользователей на сотрудников компании (IsEmployee = 1, полный доступ) и внешних пользователей (IsEmployee = 0, ограниченный доступ — клиенты, партнёры, контрагенты, экспедиторы). Переключается в карточке пользователя в блоке «Прочее».

Признак широко используется в коде — влияет на видимость, права, поиск, рассылки, синхронизацию и UI. Сводный реестр влияния:
| Область | Эффект для пользователя без IsEmployee |
Детали |
|---|---|---|
| Блок «Сотрудники» в навигации | Физически не попадает в выдачу блока (вне зависимости от прав) | groups-visibility-auto-creation.md § Флаг Users.IsEmployee |
Поиск контактов /mobile/users/search |
Результат фильтруется по межгрупповому ViewGeneralInformation запрашивающего |
groups-visibility-auto-creation.md § Видимость в API поиска контактов |
Профили коллег (AccessToOtherUserProfiles) |
Доступ к чужому профилю — только при наличии межгруппового ViewGeneralInformation (для сотрудника — управляется спецправами) |
|
| Tooltip пользователя | Не отображается (ShowUserTooltip принудительно false) |
|
| Чаты | Ряд действий запрещён (создание, управление участниками); уволенные ведут себя аналогично | |
| Комментарии — фильтр «только по/для несотрудников» | Используется в специальных лентах задач для разделения видимости | business.md § видимость комментариев |
| Customer Zone | Дополнительная фильтрация комментариев в карточке клиента | |
| Подписи к задачам | Подписывать может любой пользователь независимо от флага | business.md строка 402 |
| Подписчики (smart-критерий) | Доступен UserIsEmployeeCriteria для отбора в SmartFilter / правилах подписки на лентах |
|
| Массовая рассылка опросов | Пропускает: рассылка идёт только пользователям с IsEmployee = 1 AND IsFired = 0 |
|
| Уведомления о просрочке | Пропускает: уведомления отправляются только сотрудникам с NotNotifyAboutOverdueTasks = 0 |
|
| Email-уведомления | Если пользователь без IsEmployee ни разу не заходил — рассылается упрощённый шаблон без ссылок на задачу/комментарий |
|
| Вложения файлов в e-mail | Файлы всегда отправляются как attachment (EmailFilesAsAttachments = !IsEmployee) |
|
| Exchange / Calendar Sync | Не синхронизируется с Exchange/EWS | |
| Видимость групп | Видит только разрешённые группы; сотрудник — все, кроме служебных | |
| Поиск с группами-подписчиками | Опция «искать по группам-подписчикам категории» работает только для сотрудников | |
Мобильное API (MobileUserInfo) |
Возвращается урезанный объём полей о коллегах (отсутствия, профильная инфо, аватары); собственный профиль и сотрудники возвращаются с другим набором | |
| Спецдействия | Поведение спецдействий NOTVIEWUSERINFO, VIEWGENERALINFORMATION, VIEWALLSEARCHRESULTS зависит от связки с IsEmployee (см. реестр спецдействий выше в этом файле) |
Раздел «Спецдействия» |
Признак работает поверх прав групп и рабочих мест: если у внешнего пользователя в коде есть отдельная ветка для IsEmployee = 0, она применяется независимо от наличия групповых разрешений. Поэтому при настройке прав для группы внешних пользователей важно отдельно проверять, не отсекает ли их ветвь !IsEmployee от целевой функциональности.
Пошаговые процедуры¶
Создать пользователя¶
Пошаговая процедура создания нового пользователя и добавления его в систему.
- Администрирование → Пользователи → «Создать пользователя».
-
Заполните обязательные поля: орг.единицу (должность), логин, пароль. Остальные обязательные поля зависят от Общих настроек приложения (фамилия, псевдоним, e-mail, дата рождения).
-
При необходимости сразу добавьте пользователя в группу, получите данные из AD/1С или создайте индивидуальную группу.
- Сохраните. Новый пользователь получает стартовые настройки из «Настроек по умолчанию для новых пользователей» (раздел 6).
Настроить группу и выдать права¶
Пошаговая процедура создания группы и назначения прав доступа её участникам.
- Администрирование → Группы → «Создать» → укажите наименование и тип.
- На вкладке состава добавьте участников. Для связанной группы состав берётся из орг.единицы автоматически — вручную не редактируется. Поле «Название» у связанной группы тоже заблокировано (с 2.268.348): чтобы переименовать такую группу, измените имя соответствующей орг.единицы — название связанной группы обновится автоматически при сохранении орг.единицы.
- Назначьте права: вкладка «Права на категории» (доступ к задачам), «Права на группы» (межгрупповые), «Специальные права» (системные полномочия).
На вкладке «Права на категории» по каждой категории отмечаются конкретные действия: основные (исполнять, просмотр всех задач, создавать задачи) и дополнительные (администратор задач, пакетная обработка, перенос срока и др.).

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

Связать оргструктуру с группами (автоматическое членство)¶
Процедура привязки орг. единиц к группам, после которой состав групп обновляется автоматически при кадровых изменениях.
- Постройте оргструктуру: Администрирование → Пользователи и группы → Типы орг.структуры, затем Орг. структура (дерево сверху вниз: компания → департамент → отдел → должность).
- Пометьте руководящие должности (галочка «Руководитель» в орг.единице).
- Привяжите пользователей к должностям (одна должность — основная).
- Свяжите орг.единицу с группой: выбрать орг.единицу → «Связанная группа» → «Создать новую» → «Связать с группой». Вариант «для всей ветки» включает дочерние элементы рекурсивно.
Дальше членство обновляется автоматически: добавили или убрали пользователя в орг.единице — состав связанной группы пересчитался, права применились.
Изменения в команде¶
Типовые кадровые события и соответствующие действия в системе.
- Новый сотрудник: создать пользователя → привязать к должности → автоматически попадает в связанные группы и получает права.
- Перевод между отделами: сменить орг.единицу → группы и права сменятся автоматически.
- Увольнение: уволить (не удалять — история задач сохраняется); при необходимости передать права и задачи (раздел 3).
Синхронизация с AD/LDAP описана в разделах 11 и 15, импорт из Excel — в разделе 18.
Рекомендации¶
Практические рекомендации по организации прав доступа и управлению пользователями в системе.
- Выдавайте права группам, а не отдельным людям — так проще сопровождать доступ.
- Для автоматического членства по штатному расписанию используйте связанные группы — при кадровых изменениях состав и права пересчитываются сами.
- Создавайте группы по мере необходимости (при настройке категорий), а не заранее.
- Не используйте системную группу «Все пользователи» в настройках прав.
- Перед удалением орг.единицы перенесите или открепите сотрудников — удаление орг.единицы с активными пользователями невозможно.
- Изменения «Настроек по умолчанию для новых пользователей» не применяются к существующим — для массового применения используйте «Применить к группам».
Типичные ошибки настройки¶
Частые проблемы конфигурации, их вероятные причины и способ проверки:
| Симптом | Вероятная причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| Новый пользователь создается без ожидаемых стартовых параметров | Неактуальны users-new-default-settings |
форма users-new-default-settings, API /api/admin/users/default/* |
select top (50) * from dbo.UsersNewDefaultSettings; |
| Пользователь не видит часть интерфейса после входа | Конфликт/ошибка в UserGroupSettings |
форма workplaces, API /api/admin/user-group-settings/* |
select top (50) * from dbo.UserGroupSettings; |
| После добавления в группу права не применяются | Ошибка в типе группы/вложенности | формы groups, group-parents, groupType.json |
select top (100) * from dbo.GroupParents; |
| Пользователь получил «лишние» права | Нежелательное наследование через вложенные группы | group-parents, API /api/admin/groups/{id}/users |
select top (100) * from dbo.GroupParents; |
| Увольнение не дало ожидаемого эффекта по задачам | Неверные параметры fire / не проверен перенос |
/api/admin/users (fire, firenow, move-tasks) |
select top (100) * from dbo.GroupUsersMembership; |
| Восстановленный пользователь «не как новый» | Дефолты изменились после изначального создания | users-new-default-settings, /api/admin/users/default/settings |
select top (50) * from dbo.UsersNewDefaultSettings; |
| Оргструктура отображается, но состав групп не совпадает | Не выполнен syncgroups или некорректные связи unit↔group |
/api/admin/org-structure/syncgroups, link-with-group |
select top (100) * from dbo.OrgStructureUnit; |
| Пользователь не видит карточку коллег в оргструктуре | Спецправа ограничивают просмотр | special-permissions, проверки в /api/admin/org-structure |
select top (100) * from dbo.GroupSpecialPermissions; |
| Роль назначена, но полномочия не работают | Не заполнены rolePowers или некорректная привязка roleUser |
EntityEditor rolePowers.json, roleUser.json |
select top (100) * from dbo.Roles; |
| AD sync групп проходит частично | Неверные доменные/профильные настройки | /api/admin/groups/domains, /ad/sync-all-groups |
select top (100) * from dbo.GroupDomainAccess; |
| Матрица прав на сущность не применяет изменения | Изменения внесены не в тот entityType/entityId |
/api/admin/permissions/*, /api/admin/entity-access/* |
select top (100) * from dbo.Groups; |
| Комната не появляется в выборе бронирования | Запись есть в Rooms, но справочник заполнен некорректно |
форма rooms |
select top (100) * from dbo.Rooms; |
Минимальный SQL-чеклист L2/L3¶
Набор SQL-запросов для быстрой проверки состояния ключевых таблиц домена при разборе инцидентов.
select 'Users' as [table_name], count(*) as [cnt] from dbo.Users
union all
select 'Groups', count(*) from dbo.Groups
union all
select 'UserGroupSettings', count(*) from dbo.UserGroupSettings
union all
select 'UsersNewDefaultSettings', count(*) from dbo.UsersNewDefaultSettings
union all
select 'OrgStructureUnit', count(*) from dbo.OrgStructureUnit
union all
select 'GroupParents', count(*) from dbo.GroupParents
union all
select 'GroupDomainAccess', count(*) from dbo.GroupDomainAccess
union all
select 'GroupSpecialPermissions', count(*) from dbo.GroupSpecialPermissions
union all
select 'UserInfoExtValues', count(*) from dbo.UserInfoExtValues
union all
select 'Rooms', count(*) from dbo.Rooms;
select
c.table_schema,
c.table_name,
c.column_name,
c.data_type
from information_schema.columns c
where c.table_schema = 'dbo' and
c.table_name in (
'Users',
'Groups',
'UserGroupSettings',
'UsersNewDefaultSettings',
'OrgStructureUnit',
'OrgStructureType',
'OrgStructureAppointment',
'GroupParents',
'GroupDomainAccess',
'GroupUsersMembership',
'GroupSpecialPermissions',
'UserInfoExtValues',
'Rooms'
)
order by
c.table_name,
c.ordinal_position;
Лицензии пользователей¶
Страница AdminSPA «Пользователи → Лицензии» предоставляет администратору управление лицензиями пользователей.
Управляемые типы лицензий:
- Почтовый клиент
- CRM
- Клиентская зона
- Первая Форма (индивидуальная)
- Первая Форма (конкурентная)
Фильтрация и сортировка:
- Фильтры: по типу лицензии, наличию/отсутствию лицензии, статусу увольнения (включая уволенных)
- Сортировка: по логину, ФИО, типу лицензии, идентификатору пользователя, email
- Поддержка пагинации (Skip/Take) и полного сброса через флаг GetAll
Операции с лицензиями:
- Выдать (
grant) — выдаёт пользователю лицензию указанного типа - Отозвать (
revoke) — отзывает лицензию; операция идемпотентна (если лицензии не было, состояние не меняется) - Сменить тип (
change) — атомарно меняет тип лицензии: снимает старую и выдаёт новую в одной транзакции, без промежуточного состояния «без лицензии» - Массовые операции (
bulk) — Grant / Revoke / Change над списком пользователей
Сводные счётчики:
Endpoint /api/admin/users/licenses/counters возвращает для каждого управляемого типа лицензии количество приобретённых и использованных. Используется для обновления заголовка страницы.
Источник данных: таблица dbo.UserClientAccessLicense.