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

FAQ: видимость кнопки «Поставить отсутствие» в профиле

1. Симптомы

Пользователь спрашивает:

  • «Не вижу кнопку "Поставить отсутствие" в профиле коллеги»
  • «Раньше мог ставить отсутствие за другого, теперь не могу»
  • «Не отображается причина отсутствия в профиле»

2. Матрица видимости

Кнопка видна, если выполняется условие 1 ИЛИ условие 2 (оба подпункта одновременно):

# Условие Где настраивается Проверка
1 Просматривающий — Администратор системы Свойства пользователя → «Является администратором» признак администратора
У владельца профиля есть право «Создать задачу» хотя бы в одной календарной категории хотя бы одной своей группы Права группы на категории наличие права «Создать задачу» в calendar-категориях групп владельца
Просматривающий смотрит свой профиль ИЛИ имеет спецправо SETABSENCE Свойства пользователя → Специальные права → SETABSENCE свой профиль или спецправо SETABSENCE

Условие 2 срабатывает только при одновременном выполнении 2а И 2б.

Схема проверки

Администратор? ─────────────────────── ДА → кнопка ВИДНА
      │
     НЕТ
      │
У владельца профиля есть право
«Создать задачу» в calendar-категории
хотя бы одной группы? ──────────────── НЕТ → кнопка СКРЫТА
      │
     ДА
      │
Свой профиль ИЛИ есть SETABSENCE? ──── НЕТ → кнопка СКРЫТА
      │
     ДА
      │
кнопка ВИДНА

3. Проверки 1-й линии

Порядок диагностики:

  1. Просматривающий — администратор? — если да, кнопка всегда должна быть видна. Нет → переходим к п.2.
  2. Чужой профиль — проверить последовательно:
  3. У владельца профиля есть право «Создать задачу» хотя бы в одной календарной категории хотя бы одной своей группы? (SQL-запрос в разделе 5) — если нет, кнопка скрыта независимо от остального.
  4. Просматривающий имеет спецправо SETABSENCE? (AdminSPA → Свойства пользователя → Специальные права) — если есть и условие выше выполнено, кнопка должна быть видна.
  5. Свой профиль — если просматривающий смотрит свой профиль и у него самого есть право «Создать задачу» в хотя бы одной календарной категории — кнопка видна.

4. Что запросить у клиента

Для разбора обращения соберите:

  • ID пользователя, который не видит кнопку
  • ID пользователя, для которого пытаются поставить отсутствие
  • Скриншот профиля (убедиться, что кнопка действительно отсутствует)

5. База данных

-- Диагностика видимости кнопки «Поставить отсутствие»

-- 1. Есть ли у просматривающего (userA) спецправо SETABSENCE
select *
from dbo.SpecialPermissions sp
where sp.UserID = @userA_id
  and sp.PermissionName = 'SETABSENCE';

-- 2. Есть ли у владельца профиля (userB) право «Создать задачу»
--    хотя бы в одной календарной категории хотя бы одной своей группы
select top 1
    g.GroupID,
    s.SubCategoryID,
    s.SubCategoryName
from dbo.UsersGroups ug
         join dbo.Groups g on g.GroupID = ug.GroupID
         join dbo.GroupSubcatActions gsa on gsa.GroupID = g.GroupID
         join dbo.SubCategories s on s.SubCategoryID = gsa.SubCategoryID
         join dbo.Categories c on c.CategoryID = s.CategoryID
where ug.UserID = @userB_id
  and c.IsCalendar = 1     -- только календарные разделы
  and gsa.ActionID = 1;    -- ActionID = 1 → «Создать задачу»

6. Когда обращаться в поддержку

Если настройки корректны, но проблема остаётся:

  • Все условия выполнены, но кнопка не видна — вероятно, баг интерфейса; обратитесь в поддержку 1Ф.
  • Кнопка видна, но при нажатии возникает ошибка — обратитесь в поддержку 1Ф.