ЭлементПланировщика.Расписание

Свойства · Schedule

Тип: РасписаниеЭлементаПланировщика. Расписание элемента планировщика.

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

ЭлементПланировщика.Расписание (PlannerItem.Schedule)

ЭлементПланировщика (PlannerItem)

Расписание (Schedule)

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

Использование:
Чтение и запись.
Описание:
Тип: РасписаниеЭлементаПланировщика.
Расписание элемента планировщика.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

Повторить собственную встречу через день с двумя ограничениями

Событие 15 сентября длится час. Задаём период два дня, конечную дату и лимит повторения, не создавая отдельные записи встреч.

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

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

Подготовка

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

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

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

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

  5. В этом уроке начальные два собственных события заменяются одним событием guide-owned-recurrence. Весь план существует только в памяти внешней обработки; календари телефона, пользователей и документы базы не используются.

  6. Дата, диапазон просмотра и правило повторения фиксированы в коде. Счётчик коллекции Элементы не используется как обещанный счётчик всех визуальных повторов.

  7. Для диалога сначала нажмите Отмена, потом повторите опыт с ОК. Объект для редактирования копируется отдельно, включая массивы дней и месяцев.

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебныйПлан", Новый ОписаниеТипов("Планировщик")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    План = Новый Планировщик;
    План.НачалоПериодаОтображения = Дата(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);
    Разбор.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    План.Элементы.Очистить();
    План.НачалоПериодаОтображения = Дата(2026, 9, 15);
    План.КонецПериодаОтображения = Дата(2026, 9, 23);
    План.ТекущиеПериодыОтображения.Очистить();
    План.ТекущиеПериодыОтображения.Добавить(План.НачалоПериодаОтображения, План.КонецПериодаОтображения);
    Часы.Единица = ТипЕдиницыШкалыВремени.День;
    Часы.Формат = "ДФ=dd.MM";
    СобственноеСобытие = План.Элементы.Добавить(Дата(2026, 9, 15, 9, 0, 0), Дата(2026, 9, 15, 9, 0, 0) + 3600);
    СобственноеСобытие.Значение = "guide-owned-recurrence";
    СобственноеСобытие.Текст = "Повторяющаяся учебная встреча";
    СобственноеСобытие.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    Расписание = Новый РасписаниеЭлементаПланировщика;
    Расписание.ДниНедели.Очистить();
    Расписание.Месяцы.Очистить();
    Расписание.ПериодПовтораДней = 2;
    Расписание.КоличествоПовторов = 3;
    Расписание.ДатаКонца = Дата(2026, 9, 22, 23, 59, 59);
    СобственноеСобытие.Расписание = Расписание;

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Событие = УчебныйПлан.Элементы.Найти("guide-owned-recurrence");
    Если Событие = Неопределено Тогда
        ВызватьИсключение "Нет собственного повторяющегося события";
    КонецЕсли;
    Если Событие.Конец - Событие.Начало <> 3600 Тогда
        ВызватьИсключение "Ожидалась собственная часовая встреча";
    КонецЕсли;
    Сообщить(ТипЗнч(Событие.Расписание) = Тип("РасписаниеЭлементаПланировщика"));
    Сообщить(Событие.Конец - Событие.Начало = 3600);
    Сообщить(Событие.Расписание.ПериодПовтораДней = 2);
    Сообщить(Событие.Расписание.КоличествоПовторов = 3);
    Сообщить(Событие.Расписание.ДатаКонца = Дата(2026, 9, 22, 23, 59, 59));
КонецПроцедуры

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

  1. Удаляем только два первоначальных события собственного нового плана. Новое событие имеет отдельный устойчивый ключ и длительность 3600 секунд.

  2. ПериодПовтораДней=2 означает через день; правило начинается от собственного события 15 сентября 09:00.

  3. КоличествоПовторов=3 — предельное количество повторения. ДатаКонца отдельно запрещает повторения после установленной даты.

  4. Элементы.Количество не считается количеством визуальных повторов: расписание хранится у исходного элемента.

  5. Календарная часть плана показана в днях dd.MM. Задание не запускает напоминания или регламентные задания.

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

  1. По кнопке пять сравнений ожидаются Истина: тип, длительность, период, лимит и конечная дата.

  2. Проверьте визуальный шаг повторов 15 → 17 → 19 сентября. Не объявляйте точное количество всех плиток без фактической проверки включения исходного события в лимит.

  3. После 22 сентября повторения по этому правилу не должны продолжаться.

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

Есть полноценный собственный план с повторяющимся часовым событием и двумя отдельными пределами.

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

  1. КоличествоПовторов=0 по справке означает отсутствие лимита количества, не отсутствие повторов.

  2. РасписаниеЭлементаПланировщика не имеет ТребуетсяВыполнение: не переносите методы РасписаниеРегламентногоЗадания.

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

Редактировать расписание через Ждать и применить только ОК

Немодальный диалог возвращает расписание или Неопределено; первоначальное правило хранится отдельно от редактируемой копии.

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

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

Подготовка

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

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

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

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

  5. В этом уроке начальные два собственных события заменяются одним событием guide-owned-recurrence. Весь план существует только в памяти внешней обработки; календари телефона, пользователей и документы базы не используются.

  6. Дата, диапазон просмотра и правило повторения фиксированы в коде. Счётчик коллекции Элементы не используется как обещанный счётчик всех визуальных повторов.

  7. Для диалога сначала нажмите Отмена, потом повторите опыт с ОК. Объект для редактирования копируется отдельно, включая массивы дней и месяцев.

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебныйПлан", Новый ОписаниеТипов("Планировщик")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    План = Новый Планировщик;
    План.НачалоПериодаОтображения = Дата(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);
    Разбор.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    План.Элементы.Очистить();
    План.НачалоПериодаОтображения = Дата(2026, 9, 15);
    План.КонецПериодаОтображения = Дата(2026, 9, 23);
    План.ТекущиеПериодыОтображения.Очистить();
    План.ТекущиеПериодыОтображения.Добавить(План.НачалоПериодаОтображения, План.КонецПериодаОтображения);
    Часы.Единица = ТипЕдиницыШкалыВремени.День;
    Часы.Формат = "ДФ=dd.MM";
    СобственноеСобытие = План.Элементы.Добавить(Дата(2026, 9, 15, 9, 0, 0), Дата(2026, 9, 15, 9, 0, 0) + 3600);
    СобственноеСобытие.Значение = "guide-owned-recurrence";
    СобственноеСобытие.Текст = "Повторяющаяся учебная встреча";
    СобственноеСобытие.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
    Расписание = Новый РасписаниеЭлементаПланировщика;
    Расписание.ДниНедели.Очистить();
    Расписание.Месяцы.Очистить();
    Расписание.ПериодПовтораДней = 1;
    Расписание.КоличествоПовторов = 3;
    Расписание.ДатаКонца = Дата(2026, 9, 22, 23, 59, 59);
    СобственноеСобытие.Расписание = Расписание;

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

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

&НаКлиенте
Асинх Процедура УчебноеДействие(Команда)
    Событие = УчебныйПлан.Элементы.Найти("guide-owned-recurrence");
    Если Событие = Неопределено Тогда
        ВызватьИсключение "Нет собственного повторяющегося события";
    КонецЕсли;
    Если Событие.Конец - Событие.Начало <> 3600 Тогда
        ВызватьИсключение "Ожидалась собственная часовая встреча";
    КонецЕсли;
    Копия = КопироватьРасписаниеУрока(Событие.Расписание);
    Диалог = Новый ДиалогРасписанияЭлементаПланировщика(Копия);
    Сообщить(ТипЗнч(Диалог.Расписание) = Тип("РасписаниеЭлементаПланировщика"));
    Результат = Ждать Диалог.ОткрытьАсинх();
    Если Результат = Неопределено Тогда
        Сообщить(Событие.Расписание.ПериодПовтораДней = 1 И Событие.Расписание.КоличествоПовторов = 3);
        Сообщить("Отмена: собственное расписание не применялось заново");
        Возврат;
    КонецЕсли;
    Если ТипЗнч(Результат) <> Тип("РасписаниеЭлементаПланировщика") Тогда
        ВызватьИсключение "Диалог вернул неожиданный тип";
    КонецЕсли;
    Событие.Расписание = Результат;
    Сообщить("ОК: собственное событие получило подтверждённое расписание");
КонецПроцедуры

&НаКлиенте
Функция КопироватьРасписаниеУрока(Источник)
    Копия = Новый РасписаниеЭлементаПланировщика;
    Копия.ДатаКонца = Источник.ДатаКонца;
    Копия.ДеньВМесяце = Источник.ДеньВМесяце;
    Копия.ДеньНеделиВМесяце = Источник.ДеньНеделиВМесяце;
    Копия.КоличествоПовторов = Источник.КоличествоПовторов;
    Копия.ПериодЛет = Источник.ПериодЛет;
    Копия.ПериодМесяцев = Источник.ПериодМесяцев;
    Копия.ПериодНедель = Источник.ПериодНедель;
    Копия.ПериодПовтораДней = Источник.ПериодПовтораДней;
    Копия.ДниНедели.Очистить();
    Для Каждого День Из Источник.ДниНедели Цикл
        Копия.ДниНедели.Добавить(День);
    КонецЦикла;
    Копия.Месяцы.Очистить();
    Для Каждого Месяц Из Источник.Месяцы Цикл
        Копия.Месяцы.Добавить(Месяц);
    КонецЦикла;
    Возврат Копия;
КонецФункции

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

  1. На клиенте находим собственное событие по ключу guide-owned-recurrence. Данные другого календаря не передаются.

  2. КопироватьРасписаниеУрока создаёт новый объект и новые массивы дней/месяцев. Присваивание Копия=Источник не является таким копированием.

  3. Диалог редактирует только копию. Исходное расписание применяется заново лишь при подтверждённом результате; отмена не читает и не применяет изменённую копию.

  4. ДатаКонца и КоличествоПовторов — ограничения повторения. Диалог не сохраняет встречу, не создаёт регламентное задание и не пишет настройки пользователя.

  5. ОткрытьАсинх возвращает Обещание. Ждать получает РасписаниеЭлементаПланировщика после ОК или Неопределено после отмены, не Булево.

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

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

  2. Второй запуск: поменяйте правило и ОК. Показано подтверждение применения к собственному событию; проверьте новый вид повторов в учебном плане.

  3. Этот вывод не является результатом запуска на вашей платформе: контрольный опыт выполняется в отдельной учебной базе.

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

Есть полный асинхронный диалог с настоящим результатом и сохранением исходного правила при отмене.

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

  1. Если передать исходное расписание вместо копии, редактирование может затронуть объект, который вы хотели сохранить.

  2. Не сравнивать асинхронный результат только с Истина: у него другой контракт.

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

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

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

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

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