Реализовано в версии 8.3.6.1977.
Во многих конфигурациях возникает необходимость в отображении данных в виде календаря, расписания. Задачи визуального планирования, например, часто возникают при автоматизации салонов красоты, стоматологических и ветеринарных клиник, фитнес-центров и т.д. При большом желании такие задачи можно было частично автоматизировать, используя существующие в платформе инструменты: табличный документ или диаграмму Ганта. Однако реализация подобных решений всегда была очень трудоёмкой, а их функциональность - недостаточной. К тому же они плохо переносились из одной конфигурации в другую, и не гарантировали одинаковую работоспособность в разных клиентских приложениях и разных операционных системах.
По этим причинам мы реализовали в платформе новый инструмент - Планировщик. Он предназначен для того, чтобы автоматизировать планирование задач, событий, встреч, составление календарей, расписаний и тому подобных задач.
По большому счёту весь инструмент представляет собой совокупность двух новых сущностей: объекта встроенного языка Планировщик и поля формы, имеющего вид Поле планировщика. Реквизит формы типа Планировщик отображается в поле формы, благодаря чему становится возможным визуализация данных в удобном для планирования виде и их интерактивное изменение.
Планировщик не является объектом конфигурации, поэтому никакой собственной структуры для хранения данных в СУБД он не имеет. Однако с помощью встроенного языка вы можете загрузить в него данные практически любого объекта конфигурации, лишь бы этот объект обладал двумя реквизитами типа Дата. Один из них будет указывать на начало элемента на оси времени, а другой - на конец этого элемента.
После того, как пользователь изменил в форме какой-либо элемент планировщика, платформа генерирует событие ПриОкончанииРедактирования. В этом событии вы можете изменить соответствующие данные того объекта конфигурации, из которого они загружались, и сохранить их в СУБД.
Каждый элемент планировщика имеет начало и конец (тип Дата), текст, картинку и значение. Значение не отображается в форме, а служит для связи элемента с конкретным объектом данных. Например, это может быть ссылка на элемент справочника, если планировщик отображает данные этого справочника. Естественно, цвет фона и шрифт каждого элемента также можно настроить индивидуально.
Кроме элементов планировщик обладает ещё одной важной коллекцией - это измерения. Каждое измерение позволяет группировать элементы планировщика по отношению к каждому значению этого измерения. Например, в качестве измерения может выступать учебная группа. Тогда элементы планировщика (события) вы можете анализировать по их отношению к каждой из имеющихся у вас учебных групп: 961 группа, 962 группа и 963 группа.
Планировщик имеет три важных свойства, с помощью которых вы можете создавать различные представления данных. Это свойства ЕдиницаПериодическогоВарианта, КратностьПериодическогоВарианта и ПоложениеШкалыВремени. С помощью этих свойств можно создавать такие знакомые вам представления как «День», «Неделя» или «Месяц».
Проще всего понять работу этих свойств на примерах.
Например, чтобы показать один день, вы можете задать единицу - час, кратность - 24 и расположить шкалу слева:
Чтобы показать рабочую неделю вертикально, вы можете задать единицу - день, кратность - 5 и расположить шкалу слева:
Чтобы показать полную неделю горизонтально, вы можете задать единицу - день, кратность - 7 и расположить шкалу вверху:
На этом же примере удобно показать ещё одно интересное свойство планировщика - отображаемый интервал. Если задать отображаемый интервал больше, чем «кратность единиц», то есть в данном случае больше, чем 7 дней, то планировщик начнёт переносить временную шкалу. В данном случае вниз. Это позволяет показать все даты из отображаемого интервала:
Таким образом вы можете показать полный месяц или другой произвольный интервал дат.
Интересным является то, что отображаемый интервал - это на самом деле коллекция элементов. Коллекция отображаемых интервалов. В этом примере мы задали один такой интервал, но их можно задать несколько. И совсем не обязательно, что эти интервалы должны следовать друг за другом непрерывно.
Например, задав три отображаемых интервала (7 февраля, 14 февраля и 21 февраля) вы можете одновременно показать три пятницы, чтобы сравнить состав дел в эти дни и, возможно, перенести невыполненные дела на следующую пятницу:
Планировщик может содержать не одну, а несколько шкал времени, каждая со своей периодичностью. Это удобно в тех случаях, когда отображаемые данные нужно идентифицировать, например, с точностью до дня и часа:
Вы можете выравнивать элементы по шкале времени, или наоборот, отображать реальный промежуток времени:
Саму шкалу времени вы можете показать полностью, либо скрыть её начало и/или конец. Это удобно, например, для отображения только рабочих часов:
Если все элементы, которые нужно отобразить, не помещаются в одну ячейку, вместо них Планировщик выводит надпись «+ Ещё» и количество элементов, которые скрыты. Нажав на эту надпись вы можете увидеть список всех скрытых элементов и открыть любой из них:
По желанию в планировщике можно включить или выключить отображение текущего времени:
Элементы планировщика могут отображать время начала и окончания, только время начала или не отображать время вообще:
Вы можете раскрасить интервалы фона чтобы, например, выделить другим цветом нерабочие часы или выходные дни:
Добавление данных в планировщик осуществляется простым щелчком мыши. При этом открывается окно быстрого редактирования элемента планировщика:
В этом окне вы можете задать текст элемента (события). Если нужно изменить другие свойства элемента, по кнопке Редактировать в этом окне открывается стандартная форма для редактирования элемента планировщика:
В ней уже можно задать начало, конец элемента, указать значения измерений, если они используются, а также задать расписание для элемента, если это событие повторяющееся.
Переопределить эти формы можно в событиях ПередНачаломБыстрогоРедактирования и ПередНачаломРедактирования.
Редактирование существующих элементов вы можете выполнять как через эти формы, так и перетаскиванием элементов и изменением их границ с помощью мыши:
Планировщик поддерживает групповые операции редактирования. То есть вы можете выделить сразу несколько элементов и переместить, скопировать, изменить или удалить их:
Планировщик обеспечивает перетаскивание не только в пределах «себя самого», но и в/из других элементов формы. Эта возможность может быть полезна, например, для того, чтобы из общего списка дел, показанного в форме в виде таблицы, можно было перетащить в планировщик отдельные события.
Для любого элемента вы можете задать расписание - периодичность, с которой будет повторяться это событие:
При этом можно ограничить интервал, в течение которого событие будет повторяться:
При необходимости можно изменить не только отдельное из повторяющихся событий, но и все события одновременно. Для этого в форме редактирования нужно установить флажок Применить редактирование ко всем повторам: