830 документов
← К списку

Бронирование помещений

страница

Документооборот КОРП, ДГУ
27.01.2016

Бронирование помещений

Общая информация

В "1С:Документообороте" пользователи могут бронировать помещения на определенную дату. Основной способ использования данной возможности - через команду Бронирование помещений. Дополнительные способы - через подменю Создать на основании или указание помещения в мероприятии.

Метаданные

Используемые метаданные отнесены к подсистеме БронированиеПомещений.

Основная логика работы сосредоточена в общих модулях:

  • БронированиеПомещений,
  • БронированиеПомещенийВызовСервера,
  • БронированиеПомещенийКлиент,
  • БронированиеПомещенийКлиентСервер.

Используется две подписки на события – БронированиеПередЗаписьюПредмета и БронированиеПриЗаписиПредмета. Данные подписки используются для бронирования помещений мероприятий и для поддержания информации о бронях в актуальном состоянии.

Возможность бронирования привязана к функциональной опции ИспользоватьБронированиеПомещений. Значение этой функциональной опции привязано к константе ИспользоватьБронированиеПомещений. При включении функциональной опции становятся доступны следующие возможности:

  • Использование команд бронирования помещений;
  • Автоматическое бронирование при указании помещения в карточке мероприятия;
  • В карточке помещения становится доступна настройка параметров бронирования.

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

Элементы стиля ВыделениеТекстВСпискеВыбораЦвет и ВыделениеТекстаВСпискеВыбораШрифт используются при формировании списка выбора помещений. Данным стилем выделяется текст, найденный в наименовании помещения.

Элементы стиля ЗаголовокКалендаряБроньФон, ЗаголовокКалендаряБроньЦветТекста, ЗаголовокКалендаряБроньШрифт используются при оформлении планировщика бронирования.

Справочник ТерриторииИПомещения описывает основной ресурс, бронирование которого доступно, – помещения. Справочник используется и для других целей, не только для бронирования. Доступность помещения для бронирования и возможность заполнения связанных с этим реквизитов отмечается в реквизите ДоступноБронирование.

Перечисление СпособыСозданияБрони носит служебный характер. В нем отмечается способ создания брони – вручную или из мероприятия. Влияет на поведение при изменении мероприятия – автоматически созданные брони будут автоматически удалены или изменены. Доступные значения:

  • Автоматически – бронь была создана автоматически по мероприятию;
  • АвтоматическиУказанПредмет – бронь была создана вручную, но предмет был заполнен автоматически;
  • Вручную – бронь была создана вручную.

Документ Бронь является главным метаданным, используемым для бронирования. Представляет собой сущность, обозначающую, что помещение забронировано на определенное время. К бронированию относятся следующие формы:

  • БронированиеПомещений – основная форма для работы с бронированием. Используется для графического отображения введенных броней и выбора времени для новой брони. Можно перейти из командного интерфейса конфигурации.
  • ВыборРекомендованногоВремени – форма, используемая для предупреждения о том, что на данное время брони уже введены. Предоставляет возможность выбрать другое рекомендованное время или помещение. Доступен просмотр пересекающихся броней. При наличии прав пересекающиеся брони можно удалять. Можно перейти из формы ФормаДокумента.
  • НастройкаПросмотраБроней – используется для указания настроек отображения броней. Вызывается из формы БронированиеПомещений.
  • ОтображаемыеТерритории – используется для выбора отображаемых территорий. Можно перейти по гиперссылке из формы БронировниеПомещений, если не найдено подходящих бронирования помещений.
  • ФормаДокумента – основная форма для работы с бронью. Можно перейти из формы БронированиеПомещений и формы ФормаСписка.
  • ФормаНастройкиПовторения – вспомогательная форма для настройки повторения у брони. Можно перейти из формы ФормаДокумента.
  • ФормаСписка – вспомогательная форма для просмотра списка броней. Можно перейти из формы мероприятия и из формы помещения.

Внутреннее устройство

Планировщик

Для отображения формы бронирования помещений используется специальный элемент управления – Планировщик.

Для отображения данных в планировщике используются параметры брони. Структуру параметров брони можно получить с помощью функции ПолучитьПараметрыБрони модуля БронированиеПомещенийКлиентСервер. Данные параметры предназначены для заполнения и передачи в функцию ОтобразитьПланировщикБроней в модуле БронированиеПомещений. Планировщик будет заполнен в соответствии с переданными параметрами. Персональные настройки отображения будут использоваться в соответствии с текущим пользователем.

Формирование шкалы времени происходит в процедуре УстановитьШкалуВремени общего модуля БронированиеПомещений. Для работы с требуемым размером ячейки используется две шкалы времени:

  • Видимая шкала времени размером в час.
  • Невидимая шкала времени размером в произвольном количестве минут. Именно к невидимой шкале происходит привязка при перетаскивании, создании и растягивании элементов планировщика.

Ещё одна особенность использования планировщика – время начала и время окончания отображения. По умолчанию время берётся из настроек отображения. Но если за пределами отображаемого периода есть какие-либо брони, тогда время начала и время окончания будет расширено, чтобы отобразились все брони. Данное поведение определяется в процедуре РассчитатьОтображаемыеЧасы общего модуля БронированиеПомещений.

Для работы планировщика были переопределены стандартные процедуры планировщика. Особым образом происходит работа с повторяющимися бронями: при изменении повторяющейся брони в планировщике меняется экземпляр на конкретную дату, а не вся повторяющаяся бронь. Поведение планировщика определяется в общем модуле БронированиеПомещенийКлиент в следующих процедурах:

  • ОбработкаПередСозданием – обрабатываем создание элемента в планировщике;
  • ОбработкаВыбораЭлемента – обрабатывает выбор элемента в планировщике;
  • ОбработкаОкончанияРедактированияЭлемента – обрабатывает перетаскивание, растягивание элемента в планировщике, копирование при перетаскивании. В данной обработке так же накладывается запрет на массовое копирование при перетаскивании – разрешено перетаскивание с копированием только одного элемента.
  • ОбработкаПередУдалениемЭлемента – обрабатывает удаление элемента в планировщике.

Проверка пересечений, рекомендации времени и помещений

Если выбранные пользователем время и помещения недоступны. в форме ВыборРекомендованногоВремени отображаются рекомендации времени и помещений. При этом так же отображаются пересекающиеся брони.

Логика поиска пересекающихся броней прописана в функции ПолучитьПересекающиесяБрони в общем модуле БронированиеПомещений.

  • Для случая обычных броней данная логика является простой – просто отбираются брони на данное время по данному помещению.
  • В случае повторяющихся броней ситуация несколько сложнее. В первую очередь выполняется проверка пересечения с обычными бронями на весь период повторения. После этого выполняется проверка пересечения повторяющейся брони с другими повторяющимися бронями. При этом выполняется сравнение правил повторения: есть ли пересечение по времени внутри дня и, если пересечение есть, начинается поиск пересечений по конкретным дням.

Логика формирования рекомендаций времени прописана в функции ПолучитьТаблицуРекомендаций в общем модуле БронированиеПомещений. Для повторяющихся броней рекомендации времени не поддерживаются. Рекомендации времени подбираются только среди отображаемого времени с учетом настройки, с какого и по какой час отображать брони в планировщике. Для подбора рекомендаций времени составляется таблица занятого и свободного времени помещения, и на основе свободного времени формируются рекомендации, с расчетом отклонения от требуемого времени. При этом другие помещения не учитываются.

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

Права доступа

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

Дополнительно, для некоторых помещений ввод брони доступен только сотруднику, ответственному за помещение. Логика данного поведения прописана в функции ДоступноБронированиеПомещения в общем модуле БронированиеПомещений.

Бронирование через мероприятия

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

Если организатор мероприятия ввел брони заранее, тогда для них будет установлена связь с мероприятием. Если не вводил брони заранее, будут созданы новые брони. Данная логика прописана в процедуре ЗабронироватьПомещение общего модуля БронированиеПомещений.

При пометке мероприятия на удаление, очистке даты или изменении помещения происходит удаления созданных автоматически броней и очистка установленных связей. Введенные вручную брони при этом не удаляются. При переносе мероприятия на другую дату происходит корректировка броней: созданные автоматически брони, не попадающие в новое время, удаляются, а для установленных связей очищается связь. Данная логика прописана в процедуре ОбработатьИзменениеРеквизитовПредмета общего модуля БронированиеПомещений.

Рекомендации по доработке

Добавление режима быстрого создания

В механизме бронирований не используется возможность быстрого создания в поле планировщика. Но можно переопределить стандартное поведение, чтобы поддержать данную возможность. Для этого необходимо в процедуре ОбработкаПередСозданием в общем модуле БронированиеПомещенийКлиент закомментировать существующий код. В результате для создания броней будет доступен режим быстрого создания.

Полезные процедуры и функции

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

Полезной также может оказаться функция формирования данных выбора помещения, если где-то ещё потребуется использовать выбор помещений в таком же формате – функция СформироватьДанныеВыбораПомещения в общем модуле БронированиеПомещенийВызовСервера.