ПолеКалендаря

Типы · CalendarBox

Элемент управления "Поле календаря" предназначен для показа календаря и выбора даты. Оформление календаря (отличное от стандартного) выполняется в теле процедуры-обработчике события ПриВыводеПериода.

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

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

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

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

Свойства:
ВыделенныеДаты (SelectedDates)
Доступность (Enabled)
КонецПериодаОтображения (EndOfDisplayPeriod)
НачалоПериодаОтображения (BeginOfDisplayPeriod)
ОтображатьТекущуюДату (ShowCurrentDate)
ПеремещениеПоКалендарю (CalendarNavigation)
Подсказка (ToolTip)
РазрешитьНачалоПеретаскивания (EnableStartDrag)
РазрешитьПеретаскивание (EnableDrag)
Рамка (Border)
РежимВыделения (SelectionMode)
ТекущаяДата (CurrentDate)
ЦветВыходныхДней (HolidayColor)
ЦветРамки (BorderColor)
ЦветТекстаВыделения (SelectionTextColor)
ЦветТекстаКнопки (ButtonTextColor)
ЦветТекстаПоля (FieldTextColor)
ЦветФонаВыделения (SelectionBackColor)
ЦветФонаКнопки (ButtonBackColor)
ЦветФонаПоля (FieldBackColor)
Шрифт (Font)

Методы:
Обновить (Refresh)

События:
Выбор (Selection)
НачалоПеретаскивания (DragStart)
ОкончаниеПеретаскивания (DragEnd)
Перетаскивание (Drag)
ПриАктивизацииДаты (OnActivateDate)
ПриВыводеПериода (OnPeriodOutput)
ПриИзменении (OnChange)
ПроверкаПеретаскивания (DragCheck)

Описание:

Элемент управления "Поле календаря" предназначен для показа календаря и выбора даты.
Оформление календаря (отличное от стандартного) выполняется в теле процедуры-обработчике события ПриВыводеПериода.

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

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

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

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

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

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

Ограничить календарь собственным октябрём

У календаря разрешены даты октября 2026. Текущая выбранная дата 4 октября не равна системной дате компьютера.

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

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

Подготовка

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

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

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

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

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

Процедура УчебнаяКоманда(Кнопка)
    Календарь = ЭтаФорма.ЭлементыФормы.УчебныйКалендарь;
    Сообщить(Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1));
    Сообщить(Календарь.КонецПериодаОтображения = Дата(2026, 10, 31));
    Сообщить(Календарь.РежимВыделения = РежимВыделенияДаты.Одиночный);
    Сообщить(Календарь.ПеремещениеПоКалендарю);
    Сообщить(Календарь.ОтображатьТекущуюДату);
    Сообщить(Календарь.Доступность);
    Сообщить(Не Календарь.РазрешитьНачалоПеретаскивания И Не Календарь.РазрешитьПеретаскивание);
    Сообщить("Текущая выбранная дата: " + Строка(Календарь.ТекущаяДата));
КонецПроцедуры

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

  1. НачалоПериодаОтображения и КонецПериодаОтображения — нижняя и верхняя границы доступного перемещения.

  2. ПеремещениеПоКалендарю разрешает перемещение вне сейчас видимых дат, но не снимает границы октября.

  3. ТекущаяДата — текущая выбранная дата календаря. ОтображатьТекущуюДату включает строку с текущей датой.

  4. Два запрета перетаскивания относятся к источнику и приёмнику операции; файлового импорта здесь нет.

  5. Команда только читает свою настройку. Выбранную дату можно изменить интерактивно в пределах октября.

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

  1. Семь сообщений Истина и диагностика выбранной даты.

  2. До ручного выбора дата 04.10.2026; после выбора другого дня меняется только диагностика.

  3. Перемещение за 01–31.10.2026 недоступно.

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

Разделены границы, разрешение перемещения и текущая выбранная дата.

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

  1. Для снятия границ используется Неопределено, а не произвольная дата 0001 года.

  2. Ограничение UI не является серверной проверкой даты рабочего документа.

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

Оформить календарь, не подменяя выделенные даты

Фон и текст поля, кнопок и выделения настраиваются независимо. Цвет выходного дня — оформление, не запись нового выходного.

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

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

Подготовка

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

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

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

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

Процедура ПриОткрытии()
    УчебныйСтатус = "draft";
    Поле = ЭтаФорма.ЭлементыФормы.ПолеСтатуса;
    Варианты = Новый СписокЗначений;
    Варианты.Добавить("draft", "Черновик");
    Варианты.Добавить("published", "Опубликован");
    Поле.СписокВыбора = Варианты;
    Календарь = ЭтаФорма.ЭлементыФормы.УчебныйКалендарь;
    Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1);
    Календарь.КонецПериодаОтображения = Дата(2026, 10, 31);
    Календарь.ТекущаяДата = Дата(2026, 10, 4);
    Календарь.ЦветТекстаПоля = Новый Цвет(24, 40, 60);
    Календарь.ЦветФонаПоля = Новый Цвет(250, 252, 255);
    Календарь.ЦветТекстаКнопки = Новый Цвет(24, 40, 60);
    Календарь.ЦветФонаКнопки = Новый Цвет(235, 244, 255);
    Календарь.ЦветТекстаВыделения = Новый Цвет(255, 255, 255);
    Календарь.ЦветФонаВыделения = Новый Цвет(40, 100, 160);
    Календарь.ЦветВыходныхДней = Новый Цвет(170, 50, 50);
    Календарь.ЦветРамки = Новый Цвет(160, 176, 192);
    Календарь.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
    Календарь.Шрифт = Новый Шрифт(Календарь.Шрифт, , 11, Ложь);
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Календарь = ЭтаФорма.ЭлементыФормы.УчебныйКалендарь;
    Сообщить(Календарь.ЦветТекстаВыделения = Новый Цвет(255, 255, 255));
    Сообщить(Календарь.ЦветФонаВыделения = Новый Цвет(40, 100, 160));
    Сообщить(Календарь.ЦветВыходныхДней = Новый Цвет(170, 50, 50));
    Сообщить(Календарь.Рамка.Толщина = 1);
    Сообщить(Календарь.Шрифт.Размер = 11);
    Сообщить(Календарь.ТекущаяДата >= Дата(2026, 10, 1) И Календарь.ТекущаяДата <= Дата(2026, 10, 31));
КонецПроцедуры

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

  1. Два цвета поля относятся к обычным датам, два цвета кнопки — к управлению календарём.

  2. Выделение имеет отдельные цвета фона и текста; ЦветВыходныхДней не меняет календарь рабочих дней.

  3. Новая рамка и шрифт назначаются календарю, свойства самого значения Шрифт не изменяются.

  4. Команда проверяет настройки и принадлежность текущей даты собственному октябрю.

  5. Фактическое отображение зависит от темы, масштаба и наличия выделенной даты.

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

  1. Шесть сообщений Истина.

  2. Собственный выбранный день остаётся в октябре, записи о рабочих/выходных днях не создаются.

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

Различные части календаря оформлены без изменения календарных данных базы.

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

  1. Цвет выходного дня не доказывает, что день юридически или производственно выходной.

  2. RGB-настройки не являются подтверждением визуального результата во всех темах.

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

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

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

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

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