Перейти к основному содержимому

Видимость заданий и проектов

В ЛК заложена строгая модель видимости: пользователь видит только те задания и проекты, к которым имеет отношение. Это правило применяется одновременно во всех точках интерфейса — на главной странице, в меню, в списках, в поиске и при попытке открыть карточку задания напрямую по UUID.

Какие задания видит пользователь

Задание видно пользователю в ЛК, если выполняется хотя бы одно из условий:

  1. Пользователь — автор задания (Документ.Задание.Автор).
  2. Пользователь — инициатор задания (Документ.Задание.Инициатор).
  3. Пользователь — текущий исполнитель задания (Документ.Задание.ТекущийИсполнитель).
  4. Пользователь — участник самого задания — упомянут в табличной части «Адресаты» (через @логин) или явно добавлен в РегистрСведений.УчастникиЗаданий.
  5. Пользователь — участник проекта, к которому привязано задание через РегистрСведений.СвязьПроектовИЗаданий.

Если ни одно условие не выполняется — задание не появится:

  • ни в списке (ticket_list.html в любом режиме);
  • ни в счётчиках меню («В работе», «Все», «Мои» и т.д.);
  • ни в графике на главной странице;
  • ни в результатах поиска;
  • а попытка открыть его по прямой ссылке ticket.html?id=<UUID> приведёт к редиректу на 404.html.

То же касается формы добавления комментария — addcomment.html?id=<UUID чужого задания> открыть нельзя.

Что значит «участник проекта»

Условие 5 (участие в проекте) формируется через РегистрСведений.УчастникиПроектов с расширенной трактовкой. Пользователь считается участником проекта, если запись Участник в этом регистре равна:

  • самому пользователю напрямую (СправочникСсылка.Пользователи);
  • группе пользователей, в табличной части «Состав» которой числится этот пользователь (любая обычная группа из Справочник.ГруппыПользователей);
  • предопределённой группе «Все пользователи» (Справочник.ГруппыПользователей.ВсеПользователи) — она автоматически включает всех пользователей системы, независимо от наличия в её составе.

То есть если в проект добавлена группа ВсеПользователи как участник — все пользователи ЛК получают доступ ко всем заданиям этого проекта.

Правило «В работе» и «Приостановленные»

Дополнительные ограничения для двух режимов меню:

  • «В работе» — задание видно, если хотя бы один его раздел в РегистрСведений.СвязьПроектовИЗаданий имеет статус именно «В работе» (Перечисление.СтатусыЖизненногоЦиклаЗаданий.ВРаботе). Разделы со статусами «Новый», «Выполнено», «Возобновлено», «Отменено», «Приостановлено» под этот режим не подходят.
  • «Приостановленные» — задание видно, если хотя бы один его раздел имеет статус «Приостановлено».

Сначала применяется общий фильтр видимости (5 правил), потом — фильтр по статусу раздела.

Дедупликация при нескольких проектах

Если задание привязано к нескольким проектам, в списках и счётчиках оно учитывается ровно один раз. В колонке «Проект» списка ticket_list.html имена всех проектов перечислены через запятую.

Видимость проектов в форме создания задания

В форме ticket_new.html в выпадашке «Проект» отображаются проекты, в которых пользователь — участник (по тем же правилам — напрямую, через группу или через «Все пользователи»). Проекты без участия пользователя в выпадашку не попадают, даже если в системе они есть.

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

Видимость разделов в форме создания задания

В форме ticket_new.html после выбора проекта в выпадашке «Раздел» отображаются только разделы со статусом «Новый». Разделы в работе, выполненные, приостановленные и т. д. в выпадашку не попадают — задание сразу должно создаваться в ещё не запущенном разделе.

Видимость через RLS платформы 1С

Помимо описанных выше правил, в ЛК работает стандартная RLS-модель платформы (Row-Level Security) — она ограничивает доступ к справочникам и регистрам по ролям пользователя. Однако HTTP-сервис ЛК работает в привилегированном режиме, поэтому RLS на чтение справочников фактически не действует. Все ограничения видимости задаются явными подзапросами в коде ЛК-страниц — это и есть «5 правил видимости» выше.

Это сделано специально: хотя пользователь имеет минимальную роль доступа в ЛК (только чтение нескольких объектов), ему всё равно нужно показать список своих заданий, проекты, в которых он участник, и т. д. Привилегированный режим + явные подзапросы дают предсказуемую модель доступа без зависимости от настройки RLS-ограничений роли.

Кратко: матрица видимости

УсловиеЗадание видно?Проект в выпадашке?
Пользователь — Автор заданияДа
Пользователь — ИнициаторДа
Пользователь — ИсполнительДа
Пользователь — Адресат / Участник заданияДа
Пользователь — Участник проекта (напрямую)ДаДа
Пользователь — В группе, которая Участник проектаДаДа
Пользователь — Любой пользователь, проект имеет «Все пользователи» в участникахДаДа
Не выполнено ни одно из условийНетНет
Важно!

Описанный в статье функционал доступен в конфигурации «Управление IT-отделом» редакции 4.0.