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

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

Документ — FAQ для инженеров поддержки и администраторов 1Формы: при каких условиях кнопка «Поставить отсутствие» видна в чужом/своём профиле (матрица видимости по правам), как читать ASCII-схему проверки, что запрашивать у клиента на 1-й линии, какие SQL-запросы выполнять для диагностики (спецправо SETABSENCE, право «Создать задачу» в calendar-категориях групп владельца), и когда обращаться в поддержку 1Ф.

1–2. Симптомы и матрица видимости кнопки

Пользователь спрашивает (типовые формулировки):

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

Матрица видимости кнопки:

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

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

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

Схема проверки (ASCII-диаграмма решения):

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

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

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

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

4–6. Что запросить у клиента, база данных и когда обращаться в поддержку

Что запросить у клиента (для разбора обращения соберите):

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

База данных — диагностические SQL-запросы:

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

-- 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 → «Создать задачу»

Когда обращаться в поддержку (если настройки корректны, но проблема остаётся):

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