Как настроить нестандартные интервалы времени (10, 20 минут) в планировщике 1С?

Программист 1С v8.3 (Управляемые формы)
← На главную

При разработке интерфейсов для записи на услуги, будь то ремонт автомобилей или прием у врача, разработчики часто сталкиваются с необходимостью отойти от стандартного часового шага в планировщике. Стандартные настройки платформы «1С:Предприятие» позволяют легко установить деление по часам или дням, но попытка задать кратность в 10 или 20 минут через простые свойства периодического варианта иногда приводит к визуальному «излому» формы или некорректному отображению сетки. В этой статье мы подробно разберем, как правильно управлять шкалой времени планировщика, чтобы добиться идеального отображения интервалов любой кратности.

Понимание структуры шкалы времени

Для начала проанализируем, как устроен объект Планировщик. Его визуальная часть базируется на свойстве ШкалаВремени, которая, в свою очередь, состоит из коллекции ЭлементыШкалыВремени. Важно понимать, что планировщик поддерживает иерархическую структуру: вы можете настроить до трех уровней детализации одновременно (например, Дни -> Часы -> Минуты).

Когда мы пытаемся установить КратностьПериодическогоВарианта напрямую, система пытается применить это ко всей шкале сразу, что часто приводит к перегрузке интерфейса. Правильный подход заключается в точечной настройке конкретных элементов коллекции Элементы шкалы времени.

Программная настройка кратности интервалов

Рассмотрим ситуацию, когда пользователю нужно предоставить выбор: видеть сетку планировщика с шагом в 10, 20 или 60 минут. Для этого мы будем использовать событие изменения периода (или любого другого переключателя на форме) и программно манипулировать вторым уровнем шкалы времени (индекс [1]).

Разберем по шагам логику управления элементами (похожий принцип используется и для перемещения колонок в списках):


&НаКлиенте
Процедура ПериодПланированияПриИзменении(Элемент)
    // Получаем доступ ко второму уровню шкалы (обычно это минуты/часы)
    ЭлементШкалы = Планировщик.ШкалаВремени.Элементы[1];
    
    // Если выбран интервал меньше часа (например, 10 или 20 минут)
    Если ПериодПланирования < 60 Тогда
        // Делаем детальный уровень видимым
        ЭлементШкалы.Видимость = Истина;
        // Устанавливаем нужную кратность (10, 15, 20 и т.д.)
        ЭлементШкалы.Кратность = ПериодПланирования;
    Иначе
        // Если выбран час и более, скрываем детальный уровень, оставляя только верхний
        ЭлементШкалы.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Оптимизация визуального отображения и удаление лишних заголовков

Часто при мелкой кратности (10-20 минут) планировщик начинает выводить повторяющиеся даты или заголовки, которые загромождают интерфейс. Выясним причину: это происходит из-за настроек автоматического переноса заголовков шкалы. Чтобы сделать интерфейс «чище», можно воспользоваться свойством ФорматПеренесенныхЗаголовковШкалыВремени.

Если вам нужно полностью скрыть дату или определенный текст в заголовках, которые дублируются при прокрутке, установите в свойствах планировщика следующий формат:

ДФ=

Пустое значение в формате даты ДФ= эффективно удаляет текстовые обозначения, оставляя только сетку и время. Это особенно важно, если вы используете менеджер цветовых схем для выделения рабочих зон в узких колонках.

Тонкости настройки рабочих интервалов

При использовании мелкого шага сетки планировщик может стать очень «длинным» по горизонтали. Чтобы пользователю не приходилось бесконечно скроллить пустые ночные часы, проанализируем возможность ограничения видимости. Рассмотрим использование свойств НачалоРабочегоДня и КонецРабочегоДня объекта Планировщик.

Рекомендуется устанавливать эти границы программно при открытии формы:


Планировщик.НачалоРабочегоДня = '00010101080000'; // 08:00
Планировщик.КонецРабочегоДня  = '00010101200000'; // 20:00

Это не только улучшит внешний вид, но и повысит производительность клиентского приложения. Для отладки подобных визуальных элементов удобно использовать Редактор форм в режиме предприятия, так как системе придется отрисовывать меньше объектов.

Работа с кратностью: правила деления

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

  1. Если верхний элемент — Час (60 минут), то допустимые значения кратности для нижнего уровня: 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30.
  2. Если вы установите кратность, например, 17 минут, сетка может отрисоваться с визуальными артефактами, так как 60 не делится на 17 без остатка.

Интерактивность и создание записей

После того как мы настроили визуальную часть, разберем, как сделать работу пользователя удобной. При щелчке на ячейку планировщик должен автоматически понимать выбранный интервал. Благодаря тому, что мы настроили Элемент.Кратность, стандартное событие Выбор будет возвращать структуру ПараметрыВыбора, где начало и конец периода уже будут округлены до ваших 10 или 20 минут. Это позволяет создавать документы записи на ремонт в одно действие, просто передавая эти параметры в форму нового документа.

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

← На главную