ПолеКалендаря.Обновить

Методы · Refresh

Инициирует событие ПриВыводеПериода для всех видимых в календаре месяцев.

Синтаксис

Обновить()

Примеры платформы

ЭлементыФормы.ПроизводственныйКалендарь.Обновить();
Полное описание, параметры и ограничения

ПолеКалендаря.Обновить (CalendarBox.Refresh)

ПолеКалендаря (CalendarBox)

Обновить (Refresh)

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

Синтаксис:
Обновить()
Описание:

Инициирует событие ПриВыводеПериода для всех видимых в календаре месяцев.

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

Толстый клиент.

Пример:

ЭлементыФормы.ПроизводственныйКалендарь.Обновить();

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

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

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

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

Обновить оформление собственного учебного дня

Обновить повторно вызывает ПриВыводеПериода для видимых месяцев. В обработчике оформляем только 6 октября, правильно раскрывая КлючИЗначение.

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

Полный модуль собственной обычной формы внешней обработки. Только толстый клиент с обычными формами.

Подготовка

  1. Создайте отдельную внешнюю обработку с обычной формой в учебной базе. Только толстый клиент с обычными формами: не управляемая форма и не веб-клиент.

  2. Создайте реквизит УчебныйСтатус (Строка 20) и элемент ПолеСтатуса именно вида ПолеВыбора, свяжите его Данные с этим реквизитом. Добавьте самостоятельное ПолеКалендаря с именем УчебныйКалендарь и обычную кнопку УчебнаяКоманда.

  3. Свяжите ПриОткрытии формы и действие кнопки с одноимёнными процедурами из полного модуля. Каждый урок заменяет модуль только своей копии формы.

  4. Поля относятся только к этой учебной форме. Нет чтения рабочих справочников, записи документов, изменения производственного календаря или передачи данных.

  5. Только для этого урока свяжите событие ПриВыводеПериода элемента УчебныйКалендарь с процедурой УчебныйКалендарьПриВыводеПериода из модуля. Без этой связи метод Обновить не вызовет ваш обработчик.

Процедура ПриОткрытии()
    УчебныйСтатус = "draft";
    Поле = ЭтаФорма.ЭлементыФормы.ПолеСтатуса;
    Варианты = Новый СписокЗначений;
    Варианты.Добавить("draft", "Черновик");
    Варианты.Добавить("published", "Опубликован");
    Поле.СписокВыбора = Варианты;
    Календарь = ЭтаФорма.ЭлементыФормы.УчебныйКалендарь;
    Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1);
    Календарь.КонецПериодаОтображения = Дата(2026, 10, 31);
    Календарь.ТекущаяДата = Дата(2026, 10, 4);
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Календарь = ЭтаФорма.ЭлементыФормы.УчебныйКалендарь;
    Календарь.Обновить();
    Сообщить("Запрошено оформление всех видимых месяцев собственного календаря");
КонецПроцедуры

Процедура УчебныйКалендарьПриВыводеПериода(ОформлениеПериода)
    УчебныйДень = Дата(2026, 10, 6);
    Если УчебныйДень < ОформлениеПериода.НачалоПериода Или УчебныйДень > ОформлениеПериода.КонецПериода Тогда
        Возврат;
    КонецЕсли;
    ОформлениеПериода.Доступность = Истина;
    ОформлениеПериода.ЦветТекста = Новый Цвет(24, 40, 60);
    ОформлениеПериода.ЦветФона = Новый Цвет(250, 252, 255);
    ОформлениеПериода.Шрифт = Новый Шрифт(ОформлениеПериода.Шрифт, , 11, Ложь);
    Пара = ОформлениеПериода.Даты.Получить(УчебныйДень);
    Если Пара = Неопределено Тогда
        ВызватьИсключение "В собственном периоде нет оформления 6 октября";
    КонецЕсли;
    Оформление = Пара.Значение;
    Если ТипЗнч(Оформление) <> Тип("ОформлениеДаты") Тогда
        ВызватьИсключение "Ожидалось оформление собственной даты";
    КонецЕсли;
    Оформление.Доступность = Истина;
    Оформление.ОтображатьКакВыходнойДень = Истина;
    Оформление.Подсказка = "Учебный день, не запись производственного календаря";
    Оформление.ЦветТекста = Новый Цвет(24, 40, 60);
    Оформление.ЦветФона = Новый Цвет(255, 240, 200);
    Оформление.Шрифт = Новый Шрифт(Оформление.Шрифт, , 11, Истина);
    Сообщить(Пара.Ключ = УчебныйДень И Оформление.Дата = УчебныйДень);
    Сообщить(Оформление.ЦветФона = Новый Цвет(255, 240, 200));
    Сообщить("Дат в периоде оформления: " + Строка(ОформлениеПериода.Даты.Количество()));
КонецПроцедуры

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

  1. У календаря событие ПриВыводеПериода имеет один параметр ОформлениеПериода. Это не три аргумента начала/конца/массива.

  2. Обновить инициирует это событие для всех видимых месяцев; число вызовов зависит от размера календаря.

  3. НачалоПериода и КонецПериода readonly. Условие отбирает только период, содержащий собственный 6 октября.

  4. Даты.Получить(Дата) возвращает КлючИЗначение: ключ — дата, значение — ОформлениеДаты, а не сразу оформление.

  5. Результат проверяется до чтения Значение и затем по типу. Цвет, подсказка и признак выходного относятся только к изображению учебного дня.

  6. Никаких документов, регистров календаря и реальных выходных дней этот обработчик не изменяет.

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

  1. При отображении собственного октября: проверки оформления Истина и сообщение количества дат периода.

  2. После кнопки обработчик вызывается снова; число сообщений не зашито.

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

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

Метод обновления связан с реальным событием и безопасным раскрытием результата КлючИЗначение.

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

  1. Не обращайтесь к ЦветФона прямо у результата Получить: сначала нужно получить его Значение.

  2. В данном примере ОтображатьКакВыходнойДень — только учебный стиль, не решение об учёте рабочего времени.

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

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

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

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

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