Формулировка проблемы: необходима возможность задания карточек пользователей не всем сотрудникам, а какой-либо определенной её части.
Используется:
Конфигуратор -> Отдел кадров -> Карточки пользователей
Сотрудники -> Профиль
Решение: необходимо привязать карточки пользователей к имеющимся в Системе группам пользователей таким образом, чтобы карточка создавалась только пользователям, входящим в выбранные группы.
В связи с этим, необходимо доработать настройку карточек пользователей в отделе кадров Конфигуратора.
По нажатию на кнопку добавления карточки необходимо отображать новое диалоговое окно "Новая карточка", которое содержит:
"Форма" с компонентом выбора формы (обяз.);
"Создать карточку для всех пользователей" - флажок, включен по умолчанию;
таблица "Группы" с возможностью добавления и удаления групп (обяз. только при отключенном флажке).
При включенном флажке "Создать карточку для всех пользователей" таблица "Группы" не отображается, данная карточка создается всем пользователям, как и ранее.
При отключенном же флажке добавление групп становится обязательным. Если один пользователь входит в несколько выбранных групп, карточка ему должна создасться только одна.
Для добавления группы необходимо нажать на кнопку "+", откроется диалоговое окно выбора группы из дерева (аналогичное, например, при добавлении группы в реестрах). Выбранная группа добавляется в конец таблицы. Если количество групп превышает высоту диалога, внутри таблицы должен появиться вертикальный скролл. Нажав на иконку удаления, система должна запросить подтверждение удаления:
Вы действительно хотите удалить группу %название_группы%?
"ОК" - группа удаляется из списка, "Отмена" - действие отменяется.
Если не выбрано ни одной группы и нажимается кнопка "ОК", система не должна выполнять действие и выдавать ошибку:
Выберите хотя бы одну группу
Если не выбрана форма и нажимается кнопка "ОК", система не должна выполнять действие и выводить ошибку:
Выберите форму карточки
В списке карточек пользователей необходимо добавить новый столбец "Группа", в которой должны перечисляться группы, для которых эта карточка создана и активна (пустая ячейка означает, что карточка создана всем пользователям). Ячейка должна содержать текстовое перечисление через запятую выбранных групп. Если весь список не помещается в ячейку, с правого края он должен скрыться за многоточием с возможностью увидеть весь список в тултипе при наведении указателем мыши на ячейку.
В каждой из ячеек группы справа находится кнопка, по нажатию которой открывается диалоговое окно "Группы".
В данном окне можно настроить как создание карточки всем пользователям (включив флажок "Создать карточку для всех пользователей"), так и перенастроить список групп карточки. В целом, принцип этих настроек такой же, как и при добавлении новой карточки.
При выполнении следующих манипуляций должна создаваться новая пустая версия данных формы карточки, а сама карточка не должна более отображаться в профиле у соответствующего пользователя:
удаление группы из списка выбранных;
любые манипуляции в группах, в результате которых пользователь не будет входить ни в одну из выбранных групп карточки (например, удаление пользователя из группы или перенос автогруппы из-за изменений в орг.структуре);
смена статуса учетной записи пользователя на "удален";
скрытие карточки.
Примечание.
Если один пользователь входит в несколько групп, его карточка должна скрываться только тогда, когда он будет отсутствовать во всех выбранных группах.
Обратные действия порождают создание формы карточки пользователям, если ранее она не была создана, и восстановление скрытой (у которой пустая версия данных), если она была ранее каким-либо образом скрыта:
добавление группы в список выбранных;
любые манипуляции в группах, в результате которых пользователь будет входить в одну из выбранных групп карточки (например, добавление пользователя в группу или добавление дочерней автогруппы из-за изменений в орг.структуре);
восстановление карточки.
Процесс маршрута реестра "Копирование в карточку", который пытается сопоставить данные в карточку пользователя, который не входит в выбранную группу карточки (т.е. у этого пользователя карточка либо не существует, либо она скрыта), должен завершаться неуспешно, но сам маршрут должен продолжиться. Запись в комментарий хода выполнения при этом:
Для выбранного пользователя не задана карточка
Действия при обновлении системы
При обновлении системы в таблице карточек пользователей должен добавиться новый столбец «Группа», которая ничего не содержит (соответственно, включен флажок "Создать карточку для всех пользователей"). Все существующие карточки пользователей никак не изменяются. Других видимых изменений произойти не должно.
Пример использования
Условие: наличие в системе сотрудников с ролями Методолог, Сотрудник отдела кадров (далее — СОК), а также групп Группа1 с Пользователем1 и Группа2 с Пользователем2.
Методолог открывает «Карточки пользователей», добавляет новую карточку.
Для карточки методолог указывает форму и Группу1, пользователям которой данная карточка будет создана.
Права доступа к карточке - «Просмотр данных сотрудником».
Пользователь1 в клиентской части переходит в модуль «Сотрудники» → свой «Профиль».
Пользователю1 отображается карточка из п.2 без возможности редактирования.
Пользователь2 в клиентской части переходит в модуль «Сотрудники» → свой «Профиль».
Пользователю2 не отображается карточка из п.2.
Пользователь2 в клиентской части переходит в модуль «Сотрудники» → «Профиль» Пользователя1.
Пользователю2 не отображается карточка из п.2.
СОК в клиентской части переходит в модуль «Сотрудники» → свой «Профиль».
СОК не отображается карточка из п.2.
СОК в клиентской части переходит в модуль «Сотрудники» → «Профиль» Пользователя1.
СОК отображается карточка из п.2 с возможностью редактирования.