КлючИЗначение.Значение

Свойства · Value

Тип: Произвольный. Содержит значение элемента соответствия.

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

КлючИЗначение.Значение (KeyAndValue.Value)

КлючИЗначение (KeyAndValue)

Значение (Value)

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

Использование:
Только чтение.
Описание:
Тип: Произвольный.
Содержит значение элемента соответствия.
Доступность:

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

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

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

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

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

Оформить одну дату при выводе месяца и вызвать Обновить

Обработчик управляемой формы имеет Элемент и ОформлениеПериода, как в реальном модуле КА2. Оформляется только собственное 6 октября.

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

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

Подготовка

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

  2. В событиях формы свяжите ПриСозданииНаСервере с процедурой из кода. Не создавайте УчебнаяДата, УчебныйКалендарь и проверочную кнопку вручную.

  3. Код создаёт свой календарь и реквизит Дата с начальным значением 04.10.2026. Нет документов, регистров, файлов или календарей рабочего времени базы.

  4. Для размеров в месяцах нужен режим совместимости выше Версия8_3_2. Здесь предполагается учебная база на 8.5.1.1343 без старого режима совместимости.

  5. Только этот урок запускайте настольным тонким/толстым клиентом, не веб-клиентом. Не копируйте внутрь события серверный код создания формы.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебнаяДата", Новый ОписаниеТипов("Дата")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.УчебнаяДата = Дата(2026, 10, 4);
    Календарь = Элементы.Добавить("УчебныйКалендарь", Тип("ПолеФормы"));
    Календарь.Вид = ВидПоляФормы.ПолеКалендаря;
    Календарь.ПутьКДанным = "УчебнаяДата";
    Календарь.Заголовок = "Собственная учебная дата";
    Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1);
    Календарь.КонецПериодаОтображения = Дата(2026, 11, 30);
    Календарь.РежимВыделения = РежимВыделенияДаты.Одиночный;
    Календарь.УстановитьДействие("ПриВыводеПериода", "УчебныйКалендарьПриВыводеПериода");

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Элементы.УчебныйКалендарь.Обновить();
    Сообщить("Проверяйте учебное оформление 06.10.2026 в видимом месяце");
КонецПроцедуры

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

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

  1. УстановитьДействие связывает реальное событие календаря с клиентской процедурой из этого же полного модуля.

  2. Сигнатура управляемого обработчика проверена по C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS\CommonForms\ВыборДат\Ext\Form\Module.bsl:30: Элемент, ОформлениеПериода.

  3. Для каждого видимого месяца проверяем его границы. Даты.Получить(Дата) возвращает КлючИЗначение; стиль берётся из Значение после проверки отсутствия.

  4. Доступность и флаг выходного у 6 октября — учебное оформление, а не изменение производственного календаря.

  5. Внутри события нет вызовов серверных методов формы и изменений, требующих серверного обращения. Обновить повторяет оформление видимых месяцев.

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

  1. В настольном клиенте, когда октябрь видим, 6 октября получает учебную подсказку и фон. Сообщение проверки даты и ключа Истина.

  2. Нажмите кнопку: оформление повторится. Количество вызовов зависит от видимых месяцев; не ожидайте ровно один вызов.

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

Метод обновления соединён с настоящим обработчиком и конкретной учебной датой.

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

  1. Событие ПриВыводеПериода доступно тонкому и толстому клиенту, не веб-клиенту.

  2. В обработчике нельзя вызывать серверные методы формы или менять свойства с серверным обращением.

  3. Учебный выходной не записывает календарь или табель.

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

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

Обновить повторно вызывает ПриВыводеПериода для видимых месяцев. В обработчике оформляем только 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С» и не аффилирован с ней.