Тип: Булево. Определяет внешний вид и поведение поля при нажатии левой кнопкой мыши на перенесенный заголовок шкалы времени. Истина - вызывается событие ОбработкаФормированияКоманд. Ложь - никакие действия не выполняются.
Полное описание, параметры и ограничения
Расширение поля формы для поля планировщика.ГиперссылкаПеренесенногоЗаголовкаШкалыВремени (Form field extension for a planner.WrappedTimeScaleHeaderHyperlink)
Расширение поля формы для поля планировщика (Form field extension for a planner)
ГиперссылкаПеренесенногоЗаголовкаШкалыВремени (WrappedTimeScaleHeaderHyperlink)
Доступен, начиная с версии 8.3.16.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Определяет внешний вид и поведение поля при нажатии левой кнопкой мыши на перенесенный заголовок шкалы времени.
Истина - вызывается событие ОбработкаФормированияКоманд.
Ложь - никакие действия не выполняются.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.16.
Методическая информация
Практические примеры
Связать поле месяца, два учебных события и раскрытие собственной группы планировщика
Полная управляемая форма собственного пустого стенда. Месяц меняет только видимый интервал; отдельная схема ресурсов демонстрирует реальное раскрытие группы, не выдуманное присваивание readonly измерений события.
Где и как запускать
Полный модуль ОбщаяФорма.СтендМесяца85 собственной конфигурации; server создания/оформления и desktop managed client обработчиков; не выполнять в рабочей базе.
Подготовка
Создайте отдельную новую пустую информационную базу на платформе 8.5.1.1343. Имя конфигурации УчебныйПериодПланировщика85; основное приложение управляемое. Никаких справочников, документов, регистров, задач, бизнес-процессов и расширений. Не используйте существующую рабочую базу.
В Общие → Общие формы создайте управляемую форму СтендМесяца85. Добавьте реквизиты ПланСобытий85 и ПланРесурсов85, каждый типа Планировщик; Месяц85 и ПоследнийМесяц85 типа Дата с составом даты Дата; Состояние85 типа Строка длиной 500.
На форму перетащите Месяц85; переименуйте поле в ПолеМесяца85 и установите Вид = Поле периода, ПутьКДанным = Месяц85. Это отображение месяцев по реквизиту Дата, не реквизит СтандартныйПериод. У события Выбор укажите ПолеМесяца85Выбор.
Добавьте ПолеСобытий85 вида Поле планировщика с ПутьКДанным = ПланСобытий85 и ПолеРесурсов85 того же вида с ПутьКДанным = ПланРесурсов85. Разместите их вертикально. ПоследнийМесяц85 не выводите; Состояние85 выведите только для просмотра.
Для ПолеСобытий85 событие Выбор свяжите с ПолеСобытий85Выбор. Для обоих полей планировщика свяжите ОбработкаФормированияКоманд с СвоеПолеПлана85ОбработкаФормированияКоманд. Обработчики получают служебный первый параметр Элемент, затем параметры native события.
Создайте три команды формы ПоказатьСентябрь85, ПоказатьОктябрь85 и ПроверитьСвоиГруппы85 с действиями одноименных процедур и кнопками. Свяжите событие формы ПриСозданииНаСервере с одноименной процедурой. Вставьте весь приведенный код на уровне модуля формы, не в тело одной процедуры.
Откройте ОбщаяФорма.СтендМесяца85 из своей учебной команды интерфейса только в настольном тонком или толстом управляемом клиенте. Внешняя обработка, мобильный клиент, почта, календарь сотрудников, запись в базу и печать не требуются.
Рамка, ЦветРамки и Шрифт поля периода не применяются в интерфейсе Версия 8.5. Код показывает их реальный RW контракт и readback; для отдельной визуальной проверки legacy оформления выберите интерфейс Такси в этой собственной учебной конфигурации, не меняя рабочую.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойПустойСтенд();
ПоследнийМесяц85 = Дата(2026, 9, 1);
Месяц85 = ПоследнийМесяц85;
ПланСобытий85 = СоздатьСвойПлан85();
Первое = ПланСобытий85.Элементы.Добавить(Дата(2026, 9, 15, 9), Дата(2026, 9, 15, 10));
Первое.Значение = "урок85-сентябрь";
Первое.Текст = "Учебный разбор 15 сентября, 09:00–10:00";
Первое.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
Второе = ПланСобытий85.Элементы.Добавить(Дата(2026, 10, 2, 11), Дата(2026, 10, 2, 12));
Второе.Значение = "урок85-октябрь";
Второе.Текст = "Учебная проверка 2 октября, 11:00–12:00";
Второе.РежимРазрешенияРедактирования = РежимРазрешенияРедактированияЭлементаПланировщика.ЗапретитьРедактирование;
ПланРесурсов85 = СоздатьСвойПлан85();
Ресурсы = ПланРесурсов85.Измерения.Добавить("ресурсы85", "Учебные ресурсы, не календарь сотрудников");
Группа = Ресурсы.Элементы.Добавить("группа85", "Две вымышленные комнаты");
Группа.ОтображатьОбластьЭлементовТолькоДляПодчиненных = Истина;
Группа.Элементы.Добавить("комната85-А", "Учебная комната А");
Группа.Элементы.Добавить("комната85-Б", "Учебная комната Б");
НастроитьСвоеПолеПлана85(Элементы.ПолеСобытий85, 16);
НастроитьСвоеПолеПлана85(Элементы.ПолеРесурсов85, 8);
ПолеПериода = Элементы.ПолеМесяца85;
ПолеПериода.АвтоМаксимальнаяВысота = Ложь;
ПолеПериода.АвтоМаксимальнаяШирина = Ложь;
ПолеПериода.Высота = 7;
ПолеПериода.Ширина = 35;
ПолеПериода.МаксимальнаяВысота = 9;
ПолеПериода.МаксимальнаяШирина = 42;
ПолеПериода.РастягиватьПоВертикали = Ложь;
ПолеПериода.РастягиватьПоГоризонтали = Истина;
ПолеПериода.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Одинарная, 1);
ПолеПериода.ЦветРамки = Новый Цвет(37, 99, 235);
ПолеПериода.Шрифт = Новый Шрифт("Arial", 10);
Если ПолеПериода.АвтоМаксимальнаяВысота Или ПолеПериода.АвтоМаксимальнаяШирина
Или ПолеПериода.Высота <> 7 Или ПолеПериода.Ширина <> 35
Или ПолеПериода.МаксимальнаяВысота <> 9 Или ПолеПериода.МаксимальнаяШирина <> 42
Или ПолеПериода.РастягиватьПоВертикали Или Не ПолеПериода.РастягиватьПоГоризонтали
Или ПолеПериода.Рамка.Толщина <> 1 Или ПолеПериода.ЦветРамки <> Новый Цвет(37, 99, 235)
Или ПолеПериода.Шрифт.Имя <> "Arial" Или ПолеПериода.Шрифт.Размер <> 10 Тогда
ВызватьИсключение "Настройки собственного поля периода не прочитались обратно";
КонецЕсли;
ПланСобытий85.ТекущиеПериодыОтображения.Добавить(Дата(2026, 9, 1), Дата(2026, 10, 1) - 1);
ПланРесурсов85.ТекущиеПериодыОтображения.Добавить(Дата(2026, 9, 1), Дата(2026, 10, 1) - 1);
Если ПланСобытий85.Элементы.Количество() <> 2 Или ПланРесурсов85.Элементы.Количество() <> 0 Тогда
ВызватьИсключение "Нужно ровно два собственных события и отдельная пустая по событиям схема ресурсов";
КонецЕсли;
Состояние85 = "Сентябрь: одно событие видно, оба остаются в памяти. Дважды щелкните событие.";
КонецПроцедуры
&НаСервере
Функция СоздатьСвойПлан85()
План = Новый Планировщик;
План.НачалоПериодаОтображения = Дата(2026, 9, 1);
План.КонецПериодаОтображения = Дата(2026, 11, 1) - 1;
План.ТекущиеПериодыОтображения.Очистить();
План.ОтображатьТекущуюДату = Ложь;
План.ОтображатьПеренесенныеЗаголовкиШкалыВремени = Истина;
План.ЕдиницаПериодическогоВарианта = ТипЕдиницыШкалыВремени.День;
План.КратностьПериодическогоВарианта = 7;
Шкала = План.ШкалаВремени;
Шкала.Положение = ПоложениеШкалыВремени.Верх;
Пока Шкала.Элементы.Количество() > 0 Цикл
Шкала.Элементы.Удалить(0);
КонецЦикла;
День = Шкала.Элементы.Добавить();
День.Единица = ТипЕдиницыШкалыВремени.День;
День.Кратность = 1;
День.Формат = "ДФ=dd.MM";
День.Видимость = Истина;
Возврат План;
КонецФункции
&НаСервере
Процедура НастроитьСвоеПолеПлана85(Поле, СтрокВысоты)
Поле.АвтоМаксимальнаяВысота = Ложь;
Поле.АвтоМаксимальнаяШирина = Ложь;
Поле.Высота = СтрокВысоты;
Поле.Ширина = 76;
Поле.МаксимальнаяВысота = СтрокВысоты + 4;
Поле.МаксимальнаяШирина = 90;
Поле.ГиперссылкаПеренесенногоЗаголовкаШкалыВремени = Истина;
Поле.ГиперссылкаЭлементаИзмерения = Истина;
Поле.ГиперссылкаЭлементаШкалыВремени = Истина;
Поле.РазрешитьНачалоПеретаскивания = Ложь;
Поле.РазрешитьПеретаскивание = Ложь;
Если Поле.АвтоМаксимальнаяВысота Или Поле.АвтоМаксимальнаяШирина
Или Поле.Высота <> СтрокВысоты Или Поле.Ширина <> 76
Или Поле.МаксимальнаяВысота <> СтрокВысоты + 4 Или Поле.МаксимальнаяШирина <> 90
Или Не Поле.ГиперссылкаПеренесенногоЗаголовкаШкалыВремени
Или Не Поле.ГиперссылкаЭлементаИзмерения Или Не Поле.ГиперссылкаЭлементаШкалыВремени Тогда
ВызватьИсключение "Настройки собственного поля планировщика не сохранились";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолеМесяца85Выбор(Элемент, ВыбраннаяДата)
Месяц85 = ВыбраннаяДата;
ПрименитьСвойМесяц85();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСентябрь85(Команда)
Месяц85 = Дата(2026, 9, 1);
ПрименитьСвойМесяц85();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОктябрь85(Команда)
Месяц85 = Дата(2026, 10, 1);
ПрименитьСвойМесяц85();
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьСвойМесяц85()
Если ТипЗнч(Месяц85) <> Тип("Дата") Или Месяц85 = Дата(1, 1, 1) Тогда
Месяц85 = ПоследнийМесяц85;
Состояние85 = "Пустая дата отклонена; видимый период сохранен";
Возврат;
КонецЕсли;
Начало = НачалоМесяца(Месяц85);
Если Начало <> Дата(2026, 9, 1) И Начало <> Дата(2026, 10, 1) Тогда
Месяц85 = ПоследнийМесяц85;
Состояние85 = "Этот месяц вне собственного стенда; выберите сентябрь или октябрь 2026";
Возврат;
КонецЕсли;
ВерхняяГраница = ДобавитьМесяц(Начало, 1);
ЧислоСобытий = 0;
Для Каждого Событие Из ПланСобытий85.Элементы Цикл
Если Событие.Начало >= Начало И Событие.Начало < ВерхняяГраница Тогда
ЧислоСобытий = ЧислоСобытий + 1;
КонецЕсли;
КонецЦикла;
Если ЧислоСобытий <> 1 Или ПланСобытий85.Элементы.Количество() <> 2
Или ПланСобытий85.Элементы.Найти("урок85-сентябрь").Начало <> Дата(2026, 9, 15, 9)
Или ПланСобытий85.Элементы.Найти("урок85-октябрь").Начало <> Дата(2026, 10, 2, 11) Тогда
ВызватьИсключение "Период не должен изменять два собственных события";
КонецЕсли;
Планы = Новый Массив;
Планы.Добавить(ПланСобытий85);
Планы.Добавить(ПланРесурсов85);
Для Каждого План Из Планы Цикл
Периоды = План.ТекущиеПериодыОтображения;
Периоды.Очистить();
ВидимыйПериод = Периоды.Добавить(Начало, ВерхняяГраница - 1);
Если Периоды.Количество() <> 1 Или ВидимыйПериод.Начало <> Начало
Или ВидимыйПериод.Конец <> ВерхняяГраница - 1
Или План.НачалоПериодаОтображения <> Дата(2026, 9, 1)
Или План.КонецПериодаОтображения <> Дата(2026, 11, 1) - 1 Тогда
ВызватьИсключение "Не совпали собственный видимый месяц и независимые внешние границы";
КонецЕсли;
КонецЦикла;
Месяц85 = Начало;
ПоследнийМесяц85 = Начало;
Состояние85 = "В выбранном месяце одно событие; всего два, исходные даты сохранены";
КонецПроцедуры
&НаКлиенте
Процедура ПолеСобытий85Выбор(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Выбранные = Элемент.ВыделенныеЭлементы;
Если Выбранные.Количество() <> 1 Тогда
Состояние85 = "Дважды щелкните одно собственное событие";
Возврат;
КонецЕсли;
Событие = Выбранные[0];
Если Событие.Значение <> "урок85-сентябрь" И Событие.Значение <> "урок85-октябрь" Тогда
ВызватьИсключение "Выбрано не собственное учебное событие";
КонецЕсли;
Состояние85 = Событие.Текст + "; длительность: " + Строка(Событие.Конец - Событие.Начало) + " секунд";
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвоиГруппы85(Команда)
Ресурсы = ПланРесурсов85.Измерения.Найти("ресурсы85");
Группа = Ресурсы.Элементы.Найти("группа85");
Если Группа = Неопределено Или Группа.Элементы.Количество() <> 2 Тогда
ВызватьИсключение "Нужна собственная группа с двумя дочерними комнатами";
КонецЕсли;
Ключи = Новый Соответствие;
Ключи.Вставить(Ресурсы.Значение, "группа85");
АдресГруппы = Новый ФиксированноеСоответствие(Ключи);
Поле = Элементы.ПолеРесурсов85;
Поле.СвернутьЭлементИзмерения(АдресГруппы, Истина);
Если Поле.РазвернутЭлементИзмерения(АдресГруппы) Тогда
ВызватьИсключение "Своя группа не свернулась";
КонецЕсли;
Поле.РазвернутьЭлементИзмерения(АдресГруппы, Истина);
Если Не Поле.РазвернутЭлементИзмерения(АдресГруппы) Тогда
ВызватьИсключение "Своя группа не развернулась";
КонецЕсли;
Если ПланРесурсов85.Элементы.Количество() <> 0 Или ПланСобытий85.Элементы.Количество() <> 2 Тогда
ВызватьИсключение "Раскрытие заголовка не должно создавать или удалять события";
КонецЕсли;
Состояние85 = "Своя группа: свернута → развернута; комнаты и два исходных события сохранены";
КонецПроцедуры
&НаКлиенте
Процедура СвоеПолеПлана85ОбработкаФормированияКоманд(Элемент, ПараметрыКоманд, Команды, КомандаПоУмолчанию)
Команды.Очистить();
КомандаПоУмолчанию = Неопределено;
Состояние85 = "Собственное поле: " + Элемент.Имя + "; реальный источник нажатия: " + Строка(ПараметрыКоманд.Источник);
КонецПроцедуры
&НаСервере
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедурыРазбор по шагам
Сервер создает два новых Планировщик. В ПланСобытий85 добавлены лишь события 15.09.2026 09:00–10:00 и 02.10.2026 11:00–12:00 с устойчивыми собственными ключами. Во втором плане нет событий, только измерение ресурсов с настоящей группой и двумя детьми.
Два отдельных поля нужны намеренно: readonly ЗначенияИзмерений события не присваиваются, связь события с комнатой не выдумывается. Иерархия действительно создана через коллекции Измерения и Элементы.
Оформление задается на сервере: изменение размеров поля на клиенте требует серверного обращения. Высота — строки, ширина — символы; false АвтоМаксимальная... включает явные ограничения, 0 означал бы отсутствие ограничения.
Выбор месяца передает настоящую ВыбраннаяДата. Нормализуем ее НачалоМесяца, допускаем только два месяца стенда. Пустая дата и любой другой месяц отклоняются до очистки видимых интервалов; реквизит возвращается к последнему корректному значению.
В проверке событий используется полуоткрытый интервал начало <= дата < следующий месяц. Для визуальной коллекции конец задан последней секундой месяца. Меняются только собственные ТекущиеПериодыОтображения, не коллекция событий и не внешние границы 01.09–31.10.
Двойной щелчок вызывает Выбор. СтандартнаяОбработка = Ложь запрещает переход к редактированию. Из readonly ВыделенныеЭлементы читаем только один настоящий элемент; текст и длительность 3600 секунд выводятся в статус.
Для раскрытия группы строим ФиксированноеСоответствие: ключ — фактическое Ресурсы.Значение, значение — тот самый ключ группа85, использованный при настоящем Добавить. Передаем не индекс, подпись и не объект ЭлементИзмеренияПланировщика.
СвернутьЭлементИзмерения(..., Истина) и РазвернутьЭлементИзмерения(..., Истина) меняют состояние своего заголовка с подчиненными. РазвернутЭлементИзмерения(...), возвращающий Булево, проверяет оба состояния; коллекции и даты не меняются.
Три свойства гиперссылок включают настоящую ОбработкаФормированияКоманд при нажатии на заголовки ресурсов, дневное деление и перенесенный заголовок недельной шкалы. Обработчик читает реальный Источник, убирает только команды своего учебного поля и не запускает стандартное создание события.
Как проверить результат
Первое открытие: выбран сентябрь 2026; событие 15 сентября видно, октябрьское не видно, но ПланСобытий85.Элементы.Количество() равно 2.
ПоказатьОктябрь85: видна только проверка 2 октября; ПоказатьСентябрь85 возвращает сентябрьское событие с неизменной датой. Повторяйте команды: событий всегда два.
Выберите месяц через настоящее Поле периода. Для сентября и октября статус подтверждает одно событие; для ноября или другого года видимый интервал остается прежним, а Месяц85 возвращается к последнему допустимому месяцу.
Дважды щелкните собственное событие: статус содержит его точный текст и 3600 секунд. Окно редактирования не должно открыться; перетаскивание выключено.
Нажмите ПроверитьСвоиГруппы85: два булевых состояния проверены исключениями, итоговый статус свернута → развернута. В дереве остаются две комнаты; ни одного нового события ресурсов нет.
Щелкните заголовок комнаты или группы, день шкалы и заголовок на переносе: статус содержит реальный Источник. Выключите ровно соответствующее свойство гиперссылки в своей копии урока: обычный левый щелчок этого вида больше не вызывает данный сценарий.
В интерфейсе 8.5 не ожидайте эффекта трех legacy свойств поля периода; успешное чтение свойств обратно и визуальное применение — разные проверки.
В собственной новой форме уберите один дочерний ресурс: ПроверитьСвоиГруппы85 должна отказать до операций раскрытия. Не подменяйте значения собственных ключей внешними данными.
Ожидаемый результат
24 ранее непокрытых API разобраны в самостоятельной форме с настоящими полями, двумя собственными событиями, рабочим выбором месяца, readback оформления и циклом свернуть → проверить → развернуть → проверить.
На что обратить внимание
Учебный код не выполнялся в 1С: статические проверки не подтверждают реальное отображение формы, события, клиентский UI или печать. Ручные проверки выполняются только в отдельном собственном стенде.
Расширение периода — встроенная специализация ПолеФормы вида ПолеПериода, не расширение конфигурации CFE и не создаваемый конструктором объект.
Название native Высота поля планировщика задает строки; native МаксимальнаяВысота описана в символах. Не переводите эти настройки в пиксели и не обещайте фиксированную геометрию окна.
Период отображения не удаляет невидимое событие. Здесь нет УдалитьНеиспользуемые и нет очистки элементов событий.
Readonly ВыделенныеЭлементы и ЗначенияИзмерений не заменяются и не мутируются. Для текущего урока реальная привязка события к комнате не требуется и не заявляется.
Программное сворачивание может изменить состояние до перерисовки UI; проверка Булево проверяет состояние API, ручной просмотр — результат отрисовки.
Гиперссылки данного поля вызывают событие формирования команд, а не сеть, браузер или внешний URL. Обработчик обнуляет список только собственного учебного поля, не команд рабочей формы.
На мобильном клиенте native Высота и часть свойств поля периода недоступны. Полный модуль намеренно предназначен для настольной управляемой формы; мобильный runtime не заявлен.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.