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

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

Обзор

Раздел «Пользователи и группы» в администрировании отвечает за учётные записи сотрудников, группы и их права, а также за организационную структуру компании. Здесь настраивается:

  • жизненный цикл пользователя (создание, профиль, увольнение, восстановление, экспорт);
  • структуру и типы групп, вложенность и доменные ограничения;
  • организационную структуру (подразделения, должности, связи с группами);
  • рабочие места групп (UserGroupSettings) и дефолты для новых пользователей;
  • роль-модель (roles / rolePowers / roleUser).

Домен использует все три механизма администрирования:

  1. автоадминка (dbadmin) для конфигурационных таблиц;
  2. EntityEditor (JSON-схемы) для ролей/типов/настроек;
  3. специализированные 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

Схема 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 контроллеры

Контроллер Маршрут Методы (укрупненно) Назначение
UserManageController /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 тонкая матрица доступов
OrgStructureController /api/admin/org-structure/ дерево, CRUD оргюнитов, связи с группами, sync оргструктура и привязки

Ключевые настройки

1. Создание пользователя

В интерфейсе: Администрирование → Пользователи → «Создать пользователя». Безусловно обязательные поля — орг.единица, логин, пароль; дополнительный набор (фамилия, псевдоним, e-mail, дата рождения) задаётся в Общих настройках приложения, блок «Обязательные поля профиля пользователя».

Где настраивается:

  • автоадминка → форма add-user;
  • Admin API → POST /api/admin/users;
  • defaults → UserNewDefaultSettingsController.

Форма «Создать пользователя» в админ-панели

Таблицы:

  • 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 Фиксация активности пользователя (время последнего входа в систему)

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 важно корректно задать правила по задачам и группам.

SQL-диагностика:

select top (100) *
from dbo.GroupUsersMembership;

select top (100) *
from dbo.Users;

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;

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

Где настраивается:

  • GroupsController: /api/admin/groups/ad/sync-all-groups, /domains;
  • UserManageController: /api/admin/users/{userId}/sync-with-ad;
  • профильные настройки групп/пользователей в админ-формах.

Контур данных:

  • групповые и пользовательские записи;
  • доменные привязки;
  • sync-профили интеграции.

Что контролируется:

  • наполнение пользователей/групп из внешнего каталога;
  • согласованность membership в локальной БД.

Критичные зависимости:

  • без корректной конфигурации домена и профиля синхронизация частично успешна;
  • после sync требуется сверка фактического состава групп.

SQL-диагностика:

select top (100) *
from dbo.Groups;

select top (100) *
from dbo.GroupUsersMembership;

Автоматическое увольнение при деактивации в AD — три способа:

  1. Перемещение в OU уволенных (distinguishedName): пользователь переносится в подразделение уволенных (например, OU=Dismissed Users). Расширенное свойство distinguishedName маппится из AD; публикация + задание по таймеру увольняет по SQL-условию UserInfoExtValues.Value LIKE '%OU=Dismissed Users%'.
  2. Группа деактивации: в 1Ф создаётся группа, синхронизированная с AD-группой уволенных; циклическое смарт-расписание увольняет её членов.
  3. Признак отключённой записи (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-вставки применяются ко всей площадке включая навигацию. При нескольких рабочих местах применяются вставки РМ с наибольшим приоритетом.

Дополнительные категории чатов

Добавляет вкладки в разделе чатов для конкретных категорий. Располагаются после стандартных системных разделов.

Удаление РМ

Запрещено для групп с настроенными рабочими местами. Сначала удалить РМ, потом группу.

Форма автоадминки 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 Включает синхронизацию по расписанию ADSyncJob
Данные пользователей Синхронизация данных пользователей по маппингу
Названия групп Синхронизация названий групп
Создание новых групп Автосоздание групп из AD
Членство пользователей Синхронизация состава групп
Вложенность групп Синхронизация связей групп
Создавать пользователей из AD Автосоздание новых пользователей
Создавать по расписанию Автосоздание по ADSyncJob (требует указания OU)

⚠️ Создание по расписанию возможно только при указании орг. единиц в «Организационные единицы для синхронизации из AD». Без OU — проверяются пользователи по всей оргструктуре.

Формат логинов и оргструктура

Параметр Описание
Логины в формате Domain\Nick Необходим при нескольких доменах с совпадающими никами
Только орг. единиц из AD Вкл: затираются только AD-единицы, ручные сохраняются. Выкл: все орг. единицы перезаписываются

LDAP-фильтры

Параметр Ограничение
AD фильтр пользователей Синтаксис LDAP-фильтров; макс. 1000 символов
AD фильтр групп Синтаксис LDAP-фильтров

Пример фильтра пользователей: (|(company=1Forma)(city=Moscow))

Защита от массовых обновлений

Максимально допустимое количество обновлений — при превышении синхронизация не выполняется. Можно запустить вручную.

Маппинг полей

Встроенные поля уже вшиты. Кастомные добавляются вручную.

⚠️ Имена атрибутов AD регистрозависимые: displaynameDisplayName.

Пример маппинга: Компания=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. После импорта требуется генерация временных паролей и добавление в группы.

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.

Кастомные поля: через ключ userProfileInfoExtsJobTitle, 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 (для сотрудника — управляется спецправами) UserAdminService.cs:1129-1156
Tooltip пользователя Не отображается (ShowUserTooltip принудительно false) UserAdminService.cs:1120-1121
Чаты Ряд действий запрещён (создание, управление участниками); уволенные ведут себя аналогично ChatService.cs:1022, ChatManageService.cs:813
Комментарии — фильтр «только по/для несотрудников» Используется в специальных лентах задач для разделения видимости Comments.List.cs:247-255, business.md § видимость комментариев
Customer Zone Дополнительная фильтрация комментариев в карточке клиента CustomerZone/Comment.cs:186-188
Подписи к задачам Подписывать может любой пользователь независимо от флага business.md строка 402
Подписчики (smart-критерий) Доступен UserIsEmployeeCriteria для отбора в SmartFilter / правилах подписки на лентах UserIsEmployeeCriteria.cs
Массовая рассылка опросов Пропускает: рассылка идёт только пользователям с IsEmployee = 1 AND IsFired = 0 PollsService.cs:437-439
Уведомления о просрочке Пропускает: уведомления отправляются только сотрудникам с NotNotifyAboutOverdueTasks = 0 OverdueData.cs:210-211
Email-уведомления Если пользователь без IsEmployee ни разу не заходил — рассылается упрощённый шаблон без ссылок на задачу/комментарий MailDispatcher.cs:1237, 1542
Вложения файлов в e-mail Файлы всегда отправляются как attachment (EmailFilesAsAttachments = !IsEmployee) UserAdminService.cs:813-814
Exchange / Calendar Sync Не синхронизируется с Exchange/EWS CalendarSync.cs:51-52, ExchangeHelper.cs:111-113
Видимость групп (GroupsService.GetVisibleGroups) Видит только разрешённые группы; сотрудник — все, кроме служебных GroupsService.cs:95-96
Поиск с группами-подписчиками Опция «искать по группам-подписчикам категории» работает только для сотрудников SearchService.cs:81-82
Мобильное API (MobileUserInfo) Возвращается урезанный объём полей о коллегах (отсутствия, профильная инфо, аватары); собственный профиль и сотрудники возвращаются с другим набором MobileUserInfo.cs:512+, 766+, 843+, 1017+, 1422+
Спецдействия Поведение спецдействий NOTVIEWUSERINFO, VIEWGENERALINFORMATION, VIEWALLSEARCHRESULTS зависит от связки с IsEmployee (см. реестр спецдействий выше в этом файле) Раздел «Спецдействия»

Признак работает поверх прав групп и рабочих мест: если у внешнего пользователя в коде есть отдельная ветка для IsEmployee = 0, она применяется независимо от наличия групповых разрешений. Поэтому при настройке прав для группы внешних пользователей важно отдельно проверять, не отсекает ли их ветвь !IsEmployee от целевой функциональности.

Пошаговые процедуры

Создать пользователя

  1. Администрирование → Пользователи → «Создать пользователя».
  2. Заполните обязательные поля: орг.единицу (должность), логин, пароль. Остальные обязательные поля зависят от Общих настроек приложения (фамилия, псевдоним, e-mail, дата рождения).
  3. При необходимости сразу добавьте пользователя в группу, получите данные из AD/1С или создайте индивидуальную группу.
  4. Сохраните. Новый пользователь получает стартовые настройки из «Настроек по умолчанию для новых пользователей» (раздел 6).

Настроить группу и выдать права

  1. Администрирование → Группы → «Создать» → укажите наименование и тип.
  2. На вкладке состава добавьте участников. Для связанной группы состав берётся из орг.единицы автоматически — вручную не редактируется.
  3. Назначьте права: вкладка «Права на категории» (доступ к задачам), «Права на группы» (межгрупповые), «Специальные права» (системные полномочия).

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

Связать оргструктуру с группами (автоматическое членство)

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

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

Изменения в команде

  • Новый сотрудник: создать пользователя → привязать к должности → автоматически попадает в связанные группы и получает права.
  • Перевод между отделами: сменить орг.единицу → группы и права сменятся автоматически.
  • Увольнение: уволить (не удалять — история задач сохраняется); при необходимости передать права и задачи (раздел 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 / не проверен перенос UserManageController (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, проверки в OrgStructureController 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

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.