Видимость заданий и проектов
В ЛК заложена строгая модель видимости: пользователь видит только те задания и проекты, к которым имеет отношение. Это правило применяется одновременно во всех точках интерфейса — на главной странице, в меню, в списках, в поиске и при попытке открыть карточку задания напрямую по UUID.
Какие задания видит пользователь
Задание видно пользователю в ЛК, если выполняется хотя бы одно из условий:
- Пользователь — автор задания (
Документ.Задание.Автор). - Пользователь — инициатор задания (
Документ.Задание.Инициатор). - Пользователь — текущий исполнитель задания (
Документ.Задание.ТекущийИсполнитель). - Пользователь — участник самого задания — упомянут в табличной части «Адресаты» (через
@логин) или явно добавлен вРегистрСведений.УчастникиЗаданий. - Пользователь — участник проекта, к которому привязано задание через
РегистрСведений.СвязьПроектовИЗаданий.
Если ни одно условие не выполняется — задание не появится:
- ни в списке (
ticket_list.htmlв любом режиме); - ни в счётчиках меню («В работе», «Все», «Мои» и т.д.);
- ни в графике на главной странице;
- ни в результатах поиска;
- а попытка открыть его по прямой ссылке
ticket.html?id=<UUID>приведёт к редиректу на404.html.
То же касается формы добавления комментария — addcomment.html?id=<UUID чужого задания> открыть нельзя.
Что значит «участник проекта»
Условие 5 (участие в проекте) формируется через РегистрСведений.УчастникиПроектов с расширенной трактовкой. Пользователь считается участником проекта, если запись Участник в этом регистре равна:
- самому пользователю напрямую (
СправочникСсылка.Пользователи); - группе пользователей, в табли чной части «Состав» которой числится этот пользователь (любая обычная группа из
Справочник.ГруппыПользователей); - предопределённой группе «Все пользователи» (
Справочник.ГруппыПользователей.ВсеПользователи) — она автоматически включает всех пользователей системы, независимо от наличия в её составе.
То есть если в проект добавлена группа ВсеПользователи как участник — все пользователи ЛК получают доступ ко всем заданиям этого проекта.
Правило «В работе» и «Приостановленные»
Дополнительные ограничения для двух режимов меню:
- «В работе» — задание видно, если хотя бы один его раздел в
РегистрСведений.СвязьПроектовИЗаданийимеет статус именно «В работе» (Перечисление.СтатусыЖизненногоЦиклаЗаданий.ВРаботе). Разделы со статусами «Новый», «Выполнено», «Возобновлено», «Отменено», «Приостановлено» под этот режим не подходят. - «Приостановленные» — задание видно, если хотя бы один его раздел имеет статус «Приостановлено».
Сначала применяется общий фильтр видимости (5 правил), потом — фильтр по статусу раздела.
Дедупликация при нескольких проектах
Если задание привязано к нескольким проектам, в списках и счётчиках оно учитывается ровно один раз. В колонке «Проект» списка ticket_list.html имена всех проектов перечислены через запятую.
Видимость проектов в форме создания задания
В форме ticket_new.html в выпадашке «Проект» отображаются проекты, в которых пользователь — участник (по тем же правилам — напрямую, через группу или через «Все пользователи»). Проекты без участия пользователя в выпадашку не попадают, даже если в системе они есть.
Если пользователь — участник ровно одного проекта, он автоматически выбран в выпадашке.
Видимость разделов в форме создания задания
В форме ticket_new.html после выбора проекта в выпадашке «Раздел» отображаются только разделы со статусом «Новый». Разделы в работе, выполненные, приостановленные и т. д. в выпадашку не попадают — задание сразу должно создаваться в ещё не запущенном разделе.