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

Календарь

Календарь управляет событиями, встречами, повесткой и рабочими днями организации.

Он работает поверх нескольких источников — встроенного календаря 1Формы, Exchange и CalDav — и объединяет их в единый пользовательский сценарий.

Бизнес-объекты

Календарь оперирует несколькими видами данных:

  • Календарное событие/встреча.
  • Агенда (выборка событий по периоду).
  • Непрочитанные сообщения календаря.
  • Производственный календарь (рабочие/нерабочие дни).

Основные сценарии

Календарь охватывает несколько ключевых сценариев — от создания и согласования встречи до загрузки сетки и синхронизации с Outlook.

1. Действия со встречей

Создание, изменение, удаление и действия по событию (принять, отклонить и т.п.).

1a. Постановка встречи в чужой календарь

Пользователь может создать встречу, находясь в чужом календаре (например, открыв календарь коллеги). Правила:

  • Организатором может быть текущий пользователь или владелец просматриваемого календаря. Если право создавать встречи в этом календаре есть, поле «Организатор» доступно для выбора из этих двух, по умолчанию подставляется владелец. Права нет — организатором становится текущий пользователь, а поле недоступно. В своём календаре поле тоже недоступно: организатор — сам пользователь.
  • Владелец просматриваемого календаря, если он не стал организатором, автоматически добавляется в обязательные участники.
  • Текущий пользователь также добавляется в участники.
  • В помощнике по планированию оба участника отображаются корректно.
  • Организатор закрепляется за встречей при создании: при последующем изменении он берётся из сохранённой встречи. Пользователь, не являющийся организатором, может изменить только статус занятости — тема, место, описание, участники, повторяемость, вложения и время восстанавливаются из сохранённых значений, ICS-письмо в этом случае не рассылается.
  • Удалить встречу может организатор, даже если она находится в чужом календаре. Обратное тоже верно: чужую встречу нельзя удалить и из собственного календаря — право на удаление определяет организатор встречи, а не владелец календаря, в котором она видна. Отмена подчиняется тому же правилу: отменить встречу может её организатор, а не владелец календаря, — организатор может отменить свою встречу и в чужом календаре.

Кто может создавать и править. Во встроенном календаре 1Формы, в CalDav и во встречах-приглашениях создать встречу в чужом календаре может только владелец этого календаря или системный робот — права на просмотр событий для этого недостаточно. В Exchange возможность определяется правами почтовой папки владельца: создание — правом на создание элементов, а редактирование и удаление — только полным доступом к элементам папки; ролей уровня «свои элементы» для этого мало. Ни в одном источнике нельзя создавать, редактировать и удалять события в календаре, недоступном для просмотра, а возможность создавать не означает возможности удалять.

Кнопка «Создать встречу» в шапке календаря показывается всегда, наличие права она не проверяет: право проверяется при сохранении. Если его нет или оно отозвано, пока форма была открыта, сохранение отклоняется с сообщением «Нет прав на создание встречи в календаре {владелец}», форма остаётся открытой с введёнными данными и переключается в режим без права — организатором становится текущий пользователь, выбор организатора недоступен.

2. Загрузка календарной сетки

Пользователь получает события за выбранный период и отображение нерабочих дней для планирования. События видимого периода подгружаются порциями, пока не будут загружены все.

Переиспользование загруженного диапазона. Уже загруженные периоды запоминаются в браузере. Навигация по датам и переключение масштаба — месяц, неделя, день — внутри загруженного диапазона не порождают обращений к серверу; при открытии соседнего периода дозапрашивается только его недостающая часть. Запомненное разделено по действующему пользователю и режиму перевоплощения, владельцу отображаемого календаря, категории, применённому фильтру, часовому поясу отображения и источнику данных — события разных пользователей, категорий и фильтров между собой не смешиваются. Сигнал об изменении данных сбрасывает запомненное для текущей области, и видимый диапазон перечитывается.

Точечное обновление сетки. При обновлении данных сетка не перерисовывается целиком: система сравнивает показанный набор событий с новым и добавляет, обновляет или убирает только изменившиеся. Смена даты или названия события не приводит к перерисовке соседних событий и «миганию» сетки.

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

3. Работа со счётчиком непрочитанных

Счётчик автоматически пересчитывается при изменениях в сообщениях встреч.

4. Управление производственным календарём

Администратор обновляет рабочие и праздничные дни; изменения используются в расчётах сроков и в отображении календаря.

5. Календарное представление категории

В календарном представлении категории задачи и события отображаются в виде календаря с масштабом день, неделя или месяц. Каждая задача — активная ссылка на карточку. Клик по свободному слоту открывает карточку создания задачи.

Календарное представление категории: задачи по датам (масштаб «Месяц»)

Масштабы

Доступно несколько масштабов отображения:

Масштаб Описание
Месяц Задачи на месяц, список
Месяц (Карточка) Задачи на месяц, карточки
Неделя Задачи на неделю, список
Расписание Задачи на неделю, карточки
Рабочая неделя Задачи на неделю без выходных, список
День Задачи на день, список

В масштабе «Месяц» ячейка дня показывает не больше четырёх событий; остальные сворачиваются в ссылку «+ ещё N», которая раскрывает полный список дня во всплывающем окне. В масштабе «Месяц (Карточка)» ограничения нет — выводятся все события дня.

Администратор может предопределить доступные масштабы и масштаб по умолчанию. Выбор пользователя сохраняется между сессиями.

Карточка в масштабе «Расписание». В этом масштабе задача выводится карточкой, собранной по шаблону канбана — тому же, что настраивается для представления «Канбан»: шапка, тело и подвал с выбранными полями и дополнительными параметрами. Шаблон берётся по категории самой задачи, поэтому в представлении с задачами нескольких категорий карточки могут выглядеть по-разному. Если у категории шаблон не задан, задача показывается прежней карточкой календаря: название, статус, срок и теги, ниже — исполнитель. Настройка шаблона — в конструкторе карточки канбана.

Фильтрация

События в календаре можно отобрать по дате и роли пользователя (кнопка на панели инструментов и заголовок диалога называются «Отбор»):

Параметр фильтра Описание
Срок Активные задачи со сроком, независимо от исполнителя
Срок (Исполнитель) Активные задачи, где пользователь — исполнитель
Срок (Ответственный) Активные задачи, где пользователь — ответственный
Срок (Завершённые) Завершённые/отклонённые задачи, где пользователь — исполнитель
Дата завершения Завершённые/отклонённые задачи по дате завершения
Встречи Только для категорий типа «Календарь» — по диапазону дат в параметрах «С» и «По»
Напоминания Напоминания по задаче
Подписи Запрошенные подписи, акцептант — текущий пользователь
Начало работы Задачи по дате начала работы
Создание Задачи по дате создания

Дополнительно доступны фильтры по статусу (активные / закрытые / все), по роли (исполнитель, ответственный, организатор, наблюдатель, автор) и по дополнительным параметрам категории (ДП). Все фильтры объединяются по «И»; множественный выбор внутри одного ДП — по «ИЛИ». Настройки сохраняются отдельно для каждой категории. В персональном календаре выбранный «Отбор» хранится в браузере отдельно для своего календаря и для календарей коллег: для всех чужих календарей действует один общий набор, и он не меняет отбор своего.

События по сроку и по дате завершения одной задачи показываются раздельно — это две отметки, а не одна. У отметки «Дата завершения» в контекстном меню есть только «Открыть в новой вкладке»: перенести срок и сменить статус из неё нельзя, потому что она показывает уже зафиксированную дату завершения, а не срок.

Поддерживаемые типы ДП для фильтрации. Список ДП формируется автоматически из параметров, настроенных администратором для категории; в фильтры попадают только те ДП, на которые у пользователя есть права просмотра.

Тип ДП Как работает фильтр
Список (выбор из значений) Выпадающий список с выбором одного или нескольких значений
Да/Нет (чекбокс) Чекбокс для фильтрации по значению «Да» / «Нет»
Текст Поле для ввода текста (поиск по вхождению)
Число Диапазон значений (от и до)
Дата Выбор диапазона дат
Связь с другой категорией Выпадающий список связанных объектов
Пользователь Выбор пользователя из справочника
Lookup / выбор из списка Выбор одного значения из выпадающего списка
MultiLookup Выбор одного или нескольких значений

Чтобы ДП появился в фильтрах календаря, помимо его создания и наличия у пользователя прав на просмотр, администратор должен включить ДП в настройку «Настройка вида календарь» в прочих настройках категории (правый клик по категории → Настройки → Прочее → Настройка вида календарь).

Количество одновременно применяемых фильтров по ДП не ограничено. Первая загрузка большого диапазона с фильтрами на категории с десятками тысяч задач идёт на сервер и может занять заметное время; последующие переходы по датам и смена масштаба внутри уже загруженного диапазона выполняются без обращения к серверу — см. «Загрузка календарной сетки».

Экспорт в CSV

По кнопке «В CSV» выгружаются события за месяц в соответствии с текущими фильтрами:

Колонка Обозначение
Start Дата начала события или срок задачи
End Дата окончания или срок задачи
Title Текст задачи или название события
Type CalendarEvent — событие, Task — задача
Organizer Организатор события или исполнитель задачи
TaskId Номер задачи (для типа Task)

6. Персональный календарь

Открывается из иконки «Календарь» в панели навигации. Под индикатором — счётчик непрочитанных событий.

Внешний вид:

  • Серым показываются выходные и праздники; рабочие дни на субботу/воскресенье и предпраздничные — белым (как рабочие).
  • В видах «Неделя» и «День» серым также заливается нерабочее время суток — до начала и после конца рабочего дня по заданному графику работы (по умолчанию с 09:00 до 18:00); при границах 00:00 или 24:00 заливки нет.
  • Текущая дата выделена цветом, текущее время — красная черта.

Периоды: Месяц / Неделя / Рабочая неделя / День / Список. По умолчанию — Рабочая неделя (без выходных, праздничные дни видны). Кнопка «Сегодня» возвращает к текущей дате; стрелки ←/→ — на период вперёд/назад. Из представлений Месяц / Неделя / Рабочая неделя клик по дате переключает на День.

Ранее загруженные периоды переиспользуются: переход стрелками вперёд и назад и смена масштаба внутри загруженного диапазона не приводят к повторному обращению к серверу — см. «Загрузка календарной сетки».

Персональный календарь пользователя в режиме «Рабочая неделя»

Добавление чужих календарей. Кнопка «Добавить календарь» позволяет видеть события до 5 пользователей одновременно. Каждый получает свой цвет; чтобы убрать — крестик в бейдже.

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

Фильтр

В персональном календаре кнопка на панели инструментов и её диалог называются «Отбор». В них доступны фильтры по дате задачи и роли пользователя:

Параметр Что показывает
Срок (Исполнитель) Активные задачи с пользователем-исполнителем по дате срока
Срок (Ответственный) Активные задачи с пользователем-ответственным по дате срока
Срок (Завершённые) Завершённые/отклонённые задачи по дате срока
Дата завершения Завершённые/отклонённые по дате фактического завершения
Встречи Встречи, в которых пользователь участвует
Напоминания Напоминания по задачам
Подписи Запрошенные подписи (пользователь — акцептант) — по дате срока подписи
Начало работы По дате начала работы над задачей
Создание По дате создания задачи

Отбор встреч по повторениям. В блоке «По повторениям» выбирается одно значение: «Не выбрано» — повторения не учитываются, «Только повторяющиеся» — показываются только встречи из повторяющихся серий, «Только встречи без повторений» — только одиночные встречи. Выбор хранится в браузере и действует и на сетку календаря, и на выгрузку в CSV. В календаре категории, в календаре без встреч и в виджете с заданными типами событий блок не показывается.

В «Только повторяющиеся» попадает вся серия: и сама повторяющаяся встреча, и её вхождения, включая те, которые отредактировали отдельно от серии. В «Только встречи без повторений» остаются одиночные встречи, а серии и их вхождения скрываются.

Отбор встреч по связи с задачей. В блоке «Связь с задачей» выбирается «Не выбрано», «Да» или «Нет»: «Да» оставляет только встречи, связанные с задачей, «Нет» — только встречи без такой связи, «Не выбрано» связь не учитывает. Выбор так же хранится в браузере, действует на сетку и на выгрузку в CSV и скрыт в тех же календарях, что и блок «По повторениям».

Отбор по связи с задачей опирается на связь, которую отдаёт провайдер календаря. У встреч 1Формы это сохранённая связь встречи с задачей, у Exchange — служебное свойство события, которое проставляется при создании встречи из задачи. Встречи Exchange, созданные в календаре 1Формы, такого свойства не получают: ссылка на задачу у них живёт только в тексте события и показывается на карточке, поэтому по отбору «Связь с задачей = Да» такие встречи не находятся.

Отбор отменённых встреч. В блоке «Показать отменённые встречи» выбирается «Не выбрано», «Да» или «Нет»: при «Нет» отменённые встречи в календаре не показываются, при «Да» и «Не выбрано» показываются вместе с остальными. Выбор так же хранится в браузере, действует на сетку и на выгрузку в CSV и скрыт в тех же календарях, что и блок «По повторениям».

Отбор встреч по занятости. В блоке «Занятость (Exchange)» можно отметить одно или несколько состояний — «Свободен», «Занят», «Под вопросом», «Нет на месте», «Работаю в другом месте»: тогда в календаре остаются только встречи с отмеченными состояниями занятости. Если не отмечено ни одно, отбор по занятости не применяется. Выбор так же хранится в браузере, действует на сетку и на выгрузку в CSV и скрыт в тех же календарях, что и блок «По повторениям».

В блоке перечислены только эти пять состояний. Занятость, которую провайдер не сообщил, отдельным пунктом не отбирается: у встреч из CalDAV и у встреч-задач с нераспознанным состоянием занятость считается неопределённой.

Отбор встреч по организатору. В блоке «Организатор» выбирается один сотрудник: поле устроено как поле выбора получателей в письме, имя подставляется из справочника с поиском. Пока выбор не сделан, отбор по организатору не применяется; сделанный выбор сужает календарь до встреч, организатором которых выступает выбранный сотрудник. Выбор так же хранится в браузере, действует на сетку и на выгрузку в CSV и скрыт в тех же календарях, что и блок «По повторениям».

Отбор идёт по организатору встречи, а не по её участникам: сотрудник, приглашённый на встречу, но не являющийся её организатором, по этому отбору встречу не увидит. Адрес внешнего получателя, у которого нет учётной записи в 1Форме, в отбор не попадает и выборку не сужает.

При просмотре собственного календаря — задачи текущего пользователя; при просмотре чужого — задачи целевого пользователя, видимые текущему по правам.

Интервал задачи на сетке. Когда задача попадает на сетку календаря, её начало и конец берутся по настройкам её категории: если в категории указаны дополнительные параметры даты начала и окончания, интервал строится по ним, иначе — по системным полям задачи, дате начала работы и сроку. Правило действует и когда в календаре показаны задачи сразу нескольких категорий: каждая категория отбирается по своим настройкам, поэтому задача с интервалом в дополнительных параметрах попадает в видимое окно независимо от того, одна категория выбрана или несколько.

Выгрузка в CSV

Кнопка «В CSV» скачивает события за весь месяц с учётом текущих фильтров (даже если открыт период Неделя или День). Колонки: Start, End, Title, Type (CalendarEvent/Task), Organizer, TaskId.

Отображение событий

Событие — активная ссылка на карточку. Длительность отражается растягиванием ячейки от даты/времени начала до конца.

Контекстное меню (ПКМ) — набор пунктов зависит от того, кем в этой встрече является текущий пользователь:

  • Вы организатор — «Отменить встречу».
  • Вы участник — «Принять», «Под вопросом», «Отклонить».

Отменить встречу может только её организатор: право на отмену определяет организатор, а не владелец календаря, в котором встреча видна. Ответить на приглашение за другого участника нельзя — попытку изменить чужой ответ система отклонит. Набор доступных пунктов приходит с сервера и зависит от источника календаря.

Контекстное меню события: Принять / Под вопросом / Отклонить

Выбор отражается в поле «Статус» карточки встречи и в виде вертикальной полосы слева:

Полоса Статус
Зелёная Свободен
Синяя Занят
Жёлтая Под вопросом
Серая Нет на месте

Полоса соответствует значению поля «Показывать как» в карточке события. Иконки в правом нижнем углу — повторяющаяся встреча и наличие вложений.

Подсказка при наведении. Наведение на событие в сетке показывает подсказку: название, тип события, период, место проведения, статус занятости и участников. Если в месте проведения указана ссылка, она открывается прямо из подсказки; для ссылки на ВКС вместо адреса выводится «Присоединиться». Подсказка появляется и у остальных отметок календаря — сроков, начала работы, создания и завершения задач, подписей и напоминаний: в ней показывается тип отметки, задача и её дата.

Просмотр календарей других пользователей

В профиле пользователя — вкладка «Календарь» (полный) и блок встреч на текущую неделю на вкладке «Профиль». Кнопка раскрытия на полный экран — в правом верхнем углу.

Календарь другого сотрудника показывается по его местному времени: часы на сетке, полосы нерабочего времени и линия текущего момента расставлены по часовому поясу владельца календаря, а не зрителя. Когда пояса различаются, рядом с заголовком периода выводится метка смещения владельца от UTC (например, «UTC+3») — она показывает, что время на сетке не совпадает с собственным временем зрителя. Встреча, созданная из такого календаря, открывается с тем же временем, что на сетке, — см. «Часовой пояс при создании встречи» в разделе «Карточка календарного события».

При ограничении доступа администратором события чужих сотрудников отображаются как некликабельные синие слоты «Занят» без деталей. В профиле и краткой карточке отображается только статус (Занят / Под вопросом / Нет на месте / Свободен) и время.

Тот же уровень доступа действует в блоке встреч на вкладке «Профиль» и в статусах коллег в списке сотрудников. Что именно видно, зависит от уровня:

Уровень Чужие встречи в профиле Чужие отсутствия в статусах коллег
Нет доступа встреча не показывается запись об отсутствии не показывается
Только занятость имя занятости, место не выводится, ссылки нет время и имя занятости; если имя пустое — «Занят»
Тема и место тема и место встречи, ссылки нет как при «только занятости»: у отсутствия нет темы и места
Полные сведения тема, место и ссылка на встречу полный текст отсутствия

Свои встречи и свои отсутствия всегда показываются полностью.

Оповещения о встречах

За 15 минут до начала события в правом верхнем углу под панелью навигации появляется баннер: время, название встречи, активная ссылка из поля «Место встречи» (открывается в новой вкладке).

Действие Эффект
Отложить на 5 / 10 минут / до начала Скрыть баннер на выбранное время
Закрыть (крестик) Скрыть напоминание до конца встречи

Независимо от выбранного отложенного времени, баннер всегда показывается за 1 минуту до начала. Если встреча отменена — оповещение не показывается.

Пока встреча идёт, в баннере выводится отметка «Сейчас»; после её окончания — «Просрочено» и в скобках время начала. Просроченное напоминание автоматически скрывается через 30 минут после окончания встречи. Отложенное напоминание не скрывается автоматически: оно остаётся на экране и во время встречи, и после неё, пока пользователь не закроет его или не перейдёт по ссылке подключения.

Цвет баннера — противоположный теме приложения (тёмный в светлой, светлый в тёмной).

При свёрнутом или неактивном окне — приходят уведомления рабочего стола, клик по уведомлению переключает на 1Форму.

Оповещения отключаются в персональных настройках уведомлений: пункт «Напоминания о встречах».

7. Карточка календарного события

Способы создания

Создать встречу можно из нескольких мест интерфейса:

Способ Поведение
Кнопка «Создать встречу» в календаре Открывает пустую карточку
Кнопка «Создать» в панели навигации → «Встречу» Открывает пустую карточку
Клик по свободной ячейке календаря Подтягиваются дата и время начала/окончания (по умолчанию +30 мин). Растягивание мыши без отпускания задаёт более длинный интервал
Меню «Запланировать» в шапке задачи Подписчики задачи автоматически добавляются в участники

Поля карточки

Карточка события состоит из следующих полей:

Поле Поведение
Организатор По умолчанию — создатель события. При создании из чужого календаря поле доступно для выбора, если есть право создавать встречи в этом календаре: выбрать можно владельца календаря (подставляется по умолчанию) или себя. Права нет — организатором становится текущий пользователь, поле недоступно. Переключение организатора пересобирает обязательных участников: тот из двоих, кто не стал организатором, добавляется в участники; уже добавленные вручную участники сохраняются. При изменении встречи организатор берётся из сохранённых значений и не меняется
Название * Обязательное
Участники Пользователи системы и внешние email (формат pochta@mail.ru; иначе значение удаляется). Кнопка «Помощник по планированию» открывает подбор времени
Длительность 5 / 10 / 15 / 30 / 45 мин, 1 / 1,5 / 2 ч. После выбора пересчитывает время окончания
Дата и время При включении «Весь день» обе границы — 00:00. Если время не выбрано вручную, начало автозаполняется округлением до ближайшего часа вперёд (16:00, 16:34 или 16:55 → 17:00). При сдвиге окончания раньше начала система автоматически сдвигает начало, чтобы сохранить положительную продолжительность. Границы времени встречи проверяются на сервере при любом способе создания и при изменении встречи, в том числе при переносе и растягивании в сетке календаря: обе даты должны попадать в диапазон с 01.01.1753 по 31.12.9999, а окончание — быть строго позже начала; нулевая и отрицательная продолжительность не принимаются. В режиме «Весь день» окончание рассчитывается от следующих суток, поэтому 31.12.9999 в этом режиме выбрать нельзя. Встреча с недопустимыми датами не создаётся и не сохраняется, вместо этого возвращается сообщение о том, какая именно граница неверна
Повторять Никогда / Ежедневно / Еженедельно / Ежемесячно в тот же день / Ежемесячно на той же неделе / Ежегодно в тот же день / Ежегодно на той же неделе. Недоступно в Exchange-режимах «Синхронизация» и «Выключено»
Место встречи Адрес или ссылка. Кнопка «Ссылка на встречу» автоматически добавляет ссылку на личную ВКС в это поле и подпись со ссылкой в «Описание». Если у комнаты установлен пароль — в описание добавляется строка «Код доступа: XXXX». Ссылка, подпись и строка с кодом доступа входят в служебный блок, который система собирает сама: он пересобирается целиком при открытии карточки и при изменении полей «Связано с» и «Место встречи», поэтому ручные правки внутри блока не сохраняются. Текст за пределами блока не затрагивается; при снятии ВКС-ссылки блок удаляется вместе с разделителем. Название площадки в поле берётся из параметра «Имя приложения» в Общих настройках приложения режима администрирования. Иконка справа копирует ссылку. Ссылка распознаётся в значении поля по образцу адреса, и служебные символы в нём — кавычки, угловые скобки — подпись и разметку описания не ломают
Показывать как Тип отсутствия: Отпуск / Встреча / Удалённая работа / Прочее. Тип определяет цвет имени пользователя в системе во время события. Список настраивается администратором
Связано с Номер связанной задачи. После создания — в задачу публикуется автоматический служебный комментарий участникам от имени организатора. В почтовом уведомлении о встрече, связанной с задачей, отображается блок «Перейти» со ссылкой на эту задачу. При заполненном поле в «Описание» встречи добавляется строка «Встреча создана из: #номер» со ссылкой на задачу — она входит в служебный блок, который система собирает сама (см. «Место встречи»). Если у встречи есть и ссылка на видеоконференцию, и связь с задачей, обе части выводятся в одном блоке. Для пользователей с провайдером календаря CalDAV поле не отображается — ни при создании, ни в карточке встречи: связь встречи с задачей для CalDAV не хранится. Поле ведётся у организатора и переносится в карточки участников: при создании встречи, при замене связанной задачи и при её очистке. Значение в карточке участника перезаписывается, только когда оно отличается от значения у организатора.
Статус (для участника) Принять / Под вопросом / Отклонить. До выбора — «Неизвестно». Кнопки блокируются на время выполнения перехода. После того как переход выполнен, кнопка выбора текущего статуса исчезает, а кнопки остальных действий остаются доступны. Участник всегда может изменить решение — оставшиеся варианты остаются доступными
Описание Текст
Файлы Вложения

Ссылка на конференцию и определение встречи. Если в поле «Место встречи» указан адрес конференции, по нему определяется, какая встреча связана с комнатой ВКС: страница конференции показывает авторизованному пользователю название встречи, время начала и окончания, а для повторяющейся встречи — время ближайшего повторения. Адрес распознаётся и в прямой форме, и в форме страницы портала (/conference?room=…); сравнение идёт по полному адресу, поэтому ссылка с похожим именем комнаты внутри другого адреса встречей не считается. Встречи внешних календарей (Exchange, CalDAV) в этом сценарии не участвуют.

Часовой пояс при создании встречи. Карточка, открытая из календаря, показывает дату и время в часовом поясе этого календаря: в календаре другого сотрудника — в поясе владельца, так же как на его сетке; в своём календаре и при создании из панели навигации или из задачи — в поясе из профиля пользователя. Под полями даты и времени выводится строка «Часовой пояс» со смещением от UTC на дату начала (например, «UTC+3»), если пояс календаря отличается от пояса пользователя или если пояс организатора или кого-то из сотрудников в «Участниках» отличается от пояса календаря либо не определён; когда пояс участника определить не удалось, открывается сообщение об ошибке загрузки. При сохранении встреча записывается как один момент времени, и каждый участник видит её в своём местном времени; события «весь день» по датам не сдвигаются. Часовой пояс в самой встрече не сохраняется: при изменении встречи время показывается в поясе пользователя.

Карточка встречи: организатор, участники, длительность, время, место и описание

Участники и их статусы

В карточке события рядом с основными полями выводится список участников с их ответами на приглашение: «Принял», «Под вопросом», «Отказался», «Не ответил». Создатель встречи отмечен как «Организатор». Если ответ не получен от календаря — например, участник добавлен внешним адресом — статус показывается как «Не указан».

Над списком — общее число участников и разбивка по ответам: приняли, под вопросом, не ответили, отказались, не указано. Список можно упорядочить по порядку добавления, по статусу или по алфавиту; выбранный порядок действует до закрытия карточки и не сохраняется. Сначала показываются первые десять участников, остальные раскрываются ссылкой «Показать все».

Поведение для отсутствий

При создании отсутствия в поле Участники автоматически указывается сотрудник, для которого регистрируется отсутствие (можно регистрировать для других при наличии прав, например HR за заболевшего). При создании из профиля пользователя в поле Уведомить автоматически добавляется его непосредственный руководитель и прямые подчинённые.

Текст чужого отсутствия показывается, только если у смотрящего есть доступ к задаче отсутствия; иначе вместо него выводится общая подпись о событии. Своё отсутствие владелец видит полностью. То же правило действует в мобильном приложении.

Состав отсутствия при разных уровнях доступа. Отсутствие чужого сотрудника в профиле, краткой информации, списке коллег и результатах поиска пользователей собирается по уровню доступа смотрящего к календарю владельца. Если доступа нет, запись не показывается вовсе. При уровнях «только занятость» и «тема и место» остаются период отсутствия и название состояния занятости, а текст отсутствия и список участников не показываются. При полном доступе выводится исходный текст отсутствия, а для отсутствия, созданного задачей, дополнительно показываются участники задачи; у отсутствия по встрече участники не показываются. Своё отсутствие владелец видит полностью.

Название состояния занятости берётся из того же справочника, что и в сетке календаря, поэтому совпадает с подписью встречи при том же уровне доступа.

Отсутствия в сигналах присутствия. Тот же состав данных приходит и в сигналах, которые обновляют статус коллеги без перезагрузки страницы, — «стал онлайн» и «печатает». Данные собираются отдельно для каждого получателя по его правам, поэтому один и тот же сигнал разным людям приходит с разным составом сведений.

Изменение события

Кто и как может менять уже созданное событие:

  • Организатор переходит к редактированию встречи прямо из карточки просмотра — кнопкой с карандашом в панели действий. У участников этой кнопки нет.
  • Список участников может менять только организатор.
  • Сохранение встречи не сбрасывает ответы участников: если состав не менялся, каждый участник считается тем же, и его ответ на приглашение сохраняется — в том числе когда почта в карточке пользователя не заполнена или отличается от той, что записана у встречи.
  • Организатор и каждый участник имеют отдельную карточку события в своём календаре.
  • Изменения организатора синхронизируются с задачами всех участников.
  • Изменения участника действуют только в его карточке (не у остальных). При сдвиге времени участником организатор получает уведомление.
  • При удалении встречи организатором её копии в календарях других участников не удаляются: они отвязываются от встречи организатора и остаются у участников самостоятельными событиями.
  • При синхронизации с Exchange у участника доступна кнопка «Предложить новое время» с двумя вариантами:
  • Принять под вопросом и предложить другое время — при отказе организатора статус меняется на «Под вопросом».
  • Отклонить и предложить другое время — при отказе статус «Отклонено» и удаление из участников.
  • Кнопка «Ссылка на встречу» в режиме редактирования отображается, если поле «Место встречи» пустое.
  • Перетаскивание: перенос карточки в календаре меняет дату и время. Если встреча повторяющаяся или в ней есть участники кроме организатора, система спрашивает подтверждение с новой датой — до подтверждения перенос не сохраняется.

При переносе отдельного вхождения повторяющейся встречи меняется только это вхождение — остальные встречи серии остаются на прежних датах; это относится и к первому вхождению, дата которого совпадает с началом серии.

Отменённые встречи

Отображаются серыми блоками с перечёркнутым названием. Карточка открывается только для чтения; в ней доступна кнопка «Удалить из календаря» (также через ПКМ по событию). В календарях других пользователей кнопка не отображается.

У отменённой повторяющейся встречи рядом появляется «Удалить ряд из календаря» (то же действие есть в контекстном меню события на сетке календаря) — она убирает из календаря участника все вхождения серии сразу, а не одно выбранное. Действие затрагивает только календарь того, кто его выполнил: организатор и остальные участники ничего не теряют. Убираются лишь те вхождения, которые организатор действительно отменил: вхождения той же серии, оставшиеся активными, остаются в календаре. Удалить ряд можно только у встречи, полученной от организатора и им же отменённой; во встроенном календаре 1Формы и в Exchange это поддерживается, у остальных источников — нет.

Карточка отменённой встречи с кнопкой «Удалить из календаря»

Вложения в карточке

Файлы — в блоке «Вложения». Если у пользователя нет права на редактирование и вложений нет — блок скрыт. При наведении справа: «Скачать всё одним архивом» и «Вложить файл». ПКМ по файлу — Скачать / Открыть в новой вкладке / Скопировать ссылку / Удалить. Офисные файлы открываются для просмотра в R7 / OnlyOffice.

Учёт трудозатрат

При назначении встречи участникам автоматически фиксируются плановые трудозатраты по времени встречи. По окончании встречи у тех, кто принял участие (статус «Принять»), фиксируются фактические трудозатраты.

8. Синхронизация с Outlook / Exchange

При включённой синхронизации события из 1Формы появляются в Outlook (и наоборот) в течение одной минуты. Изменения параметров встречи в одной системе отражаются в другой. Цвет встречи в Outlook соответствует значению поля «Показывать как» в карточке события.

Технические подробности синхронизации с Exchange — provider-ews.md.

Повторяющиеся события: правила синхронизации

Повторяющиеся встречи синхронизируются по особым правилам — изменение повтора в одной системе по-разному отражается в другой:

Действие в системе-источнике Эффект в системе-приёмнике
Снятие признака повтора в 1Форме В Exchange признак повтора не снимается (событие остаётся повторяющимся)
Установка/изменение повтора в 1Форме Новые созданные встречи в Exchange не синхронизируются
Снятие или изменение повтора в Outlook В 1Форме соответствующие встречи отклоняются
Удаление ряда повторяющихся встреч в 1Форме В Exchange они отклоняются
Установка повтора в Outlook В 1Форме создаётся соответствующее повторение и связанные задачи

При повторяющейся задаче с количеством повторов «Без ограничений» изначально создаётся фиксированное число повторов (по умолчанию 50, настраивается в общих настройках), затем встречи досоздаются ежедневно.

В ленту пользователю отправляется уведомление только при создании первого повторяющегося события — для последующих повторов сообщений не приходит.

При увольнении участника встречи (организатора или участника) встреча создаётся от имени служебного пользователя «Диспетчер задач»; в полях «Участники встречи» / «Организатор» указывается этот пользователь. Для уволенного встречи не создаются; уже созданные до увольнения остаются как есть.

Внешние пользователи

«Внешние» — те, кто не зарегистрирован в 1Форме, но имеет доступ к календарям Exchange.

Если встреча создаётся в Exchange:

  • Организатор-внешний сотрудник → в 1Форме встреча ставится от служебного пользователя; в поле «Участники» — email внешнего; задача организатора не создаётся.
  • Организатор — пользователь 1Формы с выключенной синхронизацией Exchange → организатором становится он, но задача организатора не создаётся.
  • Участник-внешний сотрудник → в поле «Участники» указывается его email.
  • Участник — пользователь 1Формы с выключенной синхронизацией → попадает в «Участники», но задача ему не ставится.

Если встреча создаётся в 1Форме:

  • Внешний сотрудник не может быть организатором.
  • Организатор с выключенной синхронизацией Exchange → встреча не создаётся в Exchange.
  • Участник-внешний сотрудник → задача в 1Форме ему не ставится; при включённой синхронизации у организатора — встреча ставится только в Exchange.
  • Участник 1Формы с выключенной синхронизацией → задача ставится в 1Форме; при включённой синхронизации у организатора — также ставится встреча в Exchange.

Письмо-приглашение внешнему участнику. При создании или изменении встречи в 1Форме внешнему участнику (его email указан в поле «Участники») на этот адрес отправляется письмо-приглашение: HTML-тело по шаблону и вложенный файл календаря .ics. В теле указываются название встречи, дата и время (для встречи «весь день» — только дата), описание и место проведения (если поле «Место» содержит ссылку — кликабельной, иначе текстом; при пустом поле блок не выводится). Подписи письма локализованы. Это относится к доставке приглашения по SMTP (работа с сервисами Exchange отключена либо синхронизация идёт по SMTP); при прямой синхронизации с Exchange приглашение отправляет сам Exchange, и шаблон 1Формы не применяется.

Приглашения на встречи только для чтения. Часть встреч приходит из Exchange приглашением, а не готовой встречей. Такое событие в 1Форме открывается только для просмотра: видны название, время, место, описание, организатор, участники, повторяемость и вложения, но кнопок ответа нет — принять, отклонить или предложить другое время можно в Outlook. Напоминание по такому событию не приходит, и связь с задачей у него не заполняется.

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

9. Помощник по планированию

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

Как открыть: кнопка «Помощник по планированию» в карточке создания встречи (категория типа «Календарь»).

Что отображается:

  • Временная сетка с занятыми и свободными слотами каждого участника.
  • При наведении на занятый слот — всплывающая подсказка с названием встречи из календаря пользователя.
  • Участники отображаются с учётом их источника календаря (встроенный календарь 1Формы или Exchange).

Позволяет выбрать временной слот, в котором все участники свободны, и сразу использовать его для встречи.

Часовые пояса участников. Сетка строится в часовом поясе встречи: он берётся из параметра, с которым открыт помощник, а если параметра нет — из профиля текущего пользователя. Границы рабочего дня общие для всех — из настроек рабочего времени приложения, — но у каждого участника отсчитываются в его собственном поясе и уже потом проецируются на шкалу встречи. Поэтому у коллеги из другого пояса рабочее время смещено относительно шкалы, а нерабочее закрашено серым. Шкала по умолчанию охватывает часы с 8:00 до 20:00 и расширяется, если чьи-то рабочие часы или встречи выходят за эти границы.

Доступность и часовой пояс профиля. Свободные и занятые интервалы участника считаются в часовом поясе его профиля: рабочее окно из настроек приложения переводится в абсолютное время по этому поясу, поэтому при просмотре из другого пояса границы рабочего дня не смещаются, а интервалы совпадают с тем, что показывает Outlook за тот же период. Если сотрудник сменил часовой пояс в профиле, занятость пересчитывается автоматически: кеш сбрасывается, данные обновляются следом. Смена пояса, пришедшая из синхронизации с каталогом или из 1С, обрабатывается так же, как ручная правка профиля; если пояс не менялся, доступность не пересобирается.

Если часовой пояс участника определить не удалось, рядом с именем выводится «Часовой пояс неизвестен». Чужой пояс вместо него не подставляется: рабочие часы для такой строки не показываются, и выбрать по ней слот нельзя.

Выбор слота. Клик по свободному месту в строке участника выбирает часовой слот, который начинается с целого часа под курсором, и возвращает его в карточку встречи в часовом поясе встречи. Клик по занятому слоту слот не выбирает.

Выделенный интервал встречи. Если помощник открыт из формы, где у встречи уже заданы начало и окончание, её интервал рисуется на шкале каждой строки сплошной полосой основного цвета темы — он виден независимо от занятости участников. При наведении на полосу выводится подсказка «Новая встреча». Если время встречи не задано, полоса не отображается.

Продолжительность возвращаемого слота — та же, что была у встречи в форме; если ни начала, ни окончания в форме нет, слот занимает час. При переходе на другой день полоса переносится на этот день с тем же временем суток и той же продолжительностью. Клик по полосе выделенного интервала время не выбирает и помощник не закрывает.

Кнопка «Помощник по планированию» недоступна для встреч «Весь день» и для встреч, у которых начало и окончание приходятся на разные календарные дни: помощник подбирает время однодневной встречи.

Помощник по планированию: занятость участников по часам

Бизнес-правила

Работа календаря подчиняется нескольким общим принципам:

  1. Для каждой операции используется активный и доступный пользователю источник календаря.
  2. Изменения событий отражаются и во внешнем источнике, и в интерфейсе 1Формы.
  3. Производственный календарь является единой опорной моделью для нерабочих дней.
  4. Ошибки источника календаря не должны оставлять интерфейс в незаметно устаревшем состоянии.
  5. Фильтрация календаря категории:
  6. Все фильтры объединяются по принципу «И»
  7. Множественный выбор внутри одного ДП работает по принципу «ИЛИ»
  8. Настройки фильтров изолированы по категориям и пользователям
  9. В фильтрацию по ДП попадают только те параметры, на которые у пользователя есть права просмотра
  10. Экспорт в CSV учитывает все активные фильтры

Связи с другими доменами

Календарь опирается на смежные домены:

Диагностика синхронизации и типичные ошибки настройки — в admin.md.