ПериодОтображенияПланировщика

Типы · PlannerRepresentationPeriod

Используется для доступа к свойствам периода отображения планировщика.

Полное описание, параметры и ограничения

ПериодОтображенияПланировщика (PlannerRepresentationPeriod)

ПериодОтображенияПланировщика (PlannerRepresentationPeriod)

Доступен, начиная с версии 8.3.6.

Свойства:
Конец (End)
Начало (Begin)

Описание:

Используется для доступа к свойствам периода отображения планировщика.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.3/data/planner}. Имя типа XDTO: PlannerRepresentationPeriod.

Использование в версии:

Доступен, начиная с версии 8.3.6.

Методическая информация

Практические примеры

Показать два рабочих интервала дня и отличить их от внешних границ

Обед исключён из отображаемых интервалов: утро 09:00–12:00 и день 13:00–17:00. Границы всего дня остаются 09:00–17:00.

Где и как запускать

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

Подготовка

  1. Создайте новую внешнюю обработку УчебныйПланировщик с пустой управляемой основной формой в учебной базе 8.5.1.1343. Каждый урок — отдельная копия модуля.

  2. Не создавайте вручную реквизит УчебныйПлан и поле ПолеПлана: они создаются программно.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Весь приведённый код вставьте на уровне модуля.

  4. Сохраните собственную EPF и откройте через Файл → Открыть в тонком клиенте Windows. События относятся к фиксированной дате 15.09.2026, не к сегодняшнему дню.

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебныйПлан", Новый ОписаниеТипов("Планировщик")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    План = Новый Планировщик;
    План.НачалоПериодаОтображения = Дата(2026, 9, 15, 9, 0, 0);
    План.КонецПериодаОтображения = Дата(2026, 9, 15, 17, 0, 0);
    План.ТекущиеПериодыОтображения.Очистить();
    План.ТекущиеПериодыОтображения.Добавить(
        План.НачалоПериодаОтображения, План.КонецПериодаОтображения);
    План.ОтображатьТекущуюДату = Ложь;
    План.ФиксироватьЗаголовокШкалыВремени = Истина;
    План.ФиксироватьЗаголовокИзмерений = Истина;
    План.ВыравниватьГраницыЭлементовПоШкалеВремени = Истина;
    План.ЦветФона = Новый Цвет(255, 255, 255);
    План.ЦветТекста = Новый Цвет(35, 45, 55);
    План.ЦветЛиний = Новый Цвет(220, 225, 230);
    План.Шрифт = Новый Шрифт("Arial", 10);
    Шкала = План.ШкалаВремени;
    Шкала.Положение = ПоложениеШкалыВремени.Верх;
    Шкала.ПрозрачныйФон = Ложь;
    Шкала.ЦветФона = Новый Цвет(240, 245, 250);
    Шкала.ЦветТекста = Новый Цвет(35, 45, 55);
    Пока Шкала.Элементы.Количество() > 0 Цикл
        Шкала.Элементы.Удалить(Шкала.Элементы.Получить(0));
    КонецЦикла;
    Часы = Шкала.Элементы.Добавить();
    Часы.Единица = ТипЕдиницыШкалыВремени.Час;
    Часы.Кратность = 1;
    Часы.Формат = "ДФ=HH:mm";
    Часы.Видимость = Истина;
    Часы.ОтображатьПериодическиеМетки = Истина;
    Часы.ЦветЛиний = Новый Цвет(220, 225, 230);
    Часы.ЦветТекста = Новый Цвет(35, 45, 55);
    Часы.ЦветФона = Новый Цвет(240, 245, 250);
    Прием = План.Элементы.Добавить(Дата(2026, 9, 15, 9, 0, 0), Дата(2026, 9, 15, 10, 0, 0));
    Прием.Значение = "training-receipt";
    Прием.Текст = "Учебный приём — 09:00–10:00";
    Прием.Подсказка = "Вымышленное событие. Только память формы.";
    Прием.ЦветФона = Новый Цвет(210, 235, 255);
    Прием.ЦветТекста = Новый Цвет(25, 70, 115);
    Прием.ЦветРамки = Новый Цвет(80, 140, 195);
    Прием.Шрифт = Новый Шрифт("Arial", 10);
    Прием.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    Разбор = План.Элементы.Добавить(Дата(2026, 9, 15, 11, 0, 0), Дата(2026, 9, 15, 12, 0, 0));
    Разбор.Значение = "training-review";
    Разбор.Текст = "Учебный разбор — 11:00–12:00";
    Разбор.ЦветФона = Новый Цвет(225, 245, 220);
    Разбор.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;


    ЭтаФорма.УчебныйПлан = План;
    Поле = Элементы.Добавить("ПолеПлана", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеПланировщика;
    Поле.ПутьКДанным = "УчебныйПлан";
    Поле.Заголовок = "Учебный день 15.09.2026";
    Поле.РазрешитьНачалоПеретаскивания = Ложь;
    Поле.РазрешитьПеретаскивание = Ложь;
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Разобрать видимые интервалы";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Периоды = УчебныйПлан.ТекущиеПериодыОтображения;
    Периоды.Очистить();
    Утро = Периоды.Добавить(Дата(2026, 9, 15, 9), Дата(2026, 9, 15, 12));
    День = Периоды.Вставить(1, Дата(2026, 9, 15, 13), Дата(2026, 9, 15, 17));
    Сообщить(Периоды.Количество() = 2);
    Сообщить(Периоды.Найти(Утро) = Утро);
    Сообщить(Периоды.Индекс(День) = 1);
    Проба = Периоды.Добавить(Дата(2026, 9, 15, 12), Дата(2026, 9, 15, 13));
    Периоды.Сдвинуть(Проба, -1);
    Сообщить(Периоды.Получить(1) = Проба);
    Периоды.Удалить(Проба);
    Сообщить(Периоды.Количество() = 2);
    Сообщить(Утро.Конец - Утро.Начало = 3 * 3600);
    Сообщить(День.Конец - День.Начало = 4 * 3600);
    Сообщить(УчебныйПлан.НачалоПериодаОтображения = Утро.Начало);
    Сообщить(УчебныйПлан.КонецПериодаОтображения = День.Конец);
КонецПроцедуры

Разбор по шагам

  1. НачалоПериодаОтображения/КонецПериодаОтображения ограничивают навигацию, а ТекущиеПериодыОтображения выбирают видимые диапазоны внутри неё.

  2. Сначала очищаем только периоды нового учебного плана, затем создаём утро и день.

  3. Найти получает объект ПериодОтображенияПланировщика и сопоставляет его даты начала и конца, не строковый ключ события.

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

  5. Разность дат доказывает три часа утра и четыре часа дня. Никакие события не удалены.

Как проверить результат

  1. Девять булевых проверок Истина.

  2. Итоговые периоды 09:00–12:00 и 13:00–17:00, обед не входит ни в один.

  3. Внешние границы дня и два исходных события сохранены.

Ожидаемый результат

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

На что обратить внимание

  1. Периоды не являются рабочим графиком сотрудника в регистрах.

  2. Найти не принимает дату или строку: его параметр имеет специальный тип периода.

  3. При пустой коллекции нет заданных видимых интервалов; в примере она заполняется до возврата управления интерфейсу.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.