ПриВыводеПериода: собственный элемент Календарь

Учебные задачи

В каждом выводимом месяце запрещаем выбор собственного учебного перерыва 15-го числа. Перебираем реальные ОформлениеДаты, переданные коллекцией события.

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

Модуль своей обычной формы, толстый клиент: основной обработчик элемента и отдельное ПриОткрытии.

Подготовка

  1. Создайте свою внешнюю обработку с обычной формой и запускайте её в толстом клиенте. Директивы &НаКлиенте / &НаСервере сюда не добавляются.

  2. Реквизиты формы: Статус (Строка 200), Количество (Число 10.0), Цена и Сумма (Число 12.2). Выведите их на форму. Основной блок назначается событию конкретного элемента, не вызывается вручную.

  3. Дополнительный блок назначьте событию формы ПриОткрытии. Он создаёт только собственные данные в памяти.

  4. Добавьте ПолеКалендаря с именем Календарь, реквизит ДатаДоставки типа Дата и поле этой даты. Основной блок назначьте указанному событию календаря.

  5. Подготовка показывает октябрь 2026 года. Для проверки оформления затем перейдите к соседнему месяцу: правило рассчитывается от месяца самого ОформлениеПериода.

Процедура КалендарьПриВыводеПериода(Элемент, ОформлениеПериода)
    Для Каждого ОформлениеДня Из ОформлениеПериода.Даты Цикл
        Если День(ОформлениеДня.Дата) = 15 Тогда
            ОформлениеДня.Доступность = Ложь;
            ОформлениеДня.Подсказка = "Учебный перерыв 15-го числа";
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
Назначить событию своей обычной формы ПриОткрытии
Процедура ПриОткрытии()
    Количество = 3;
    Цена = 250;
    Сумма = Количество * Цена;
    Статус = "Готово";
    ДатаДоставки = Дата(2026, 10, 15);
    ЭлементыФормы.Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1);
    ЭлементыФормы.Календарь.КонецПериодаОтображения = Дата(2026, 10, 31);
    ЭлементыФормы.Календарь.ТекущаяДата = ДатаДоставки;
КонецПроцедуры

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

  1. При открытии собственная обычная форма заполняет исходные реквизиты и элементы.

  2. Пользователь выполняет описанное действие; платформа передаёт Элемент и параметры события.

  3. В каждом выводимом месяце запрещаем выбор собственного учебного перерыва 15-го числа. Перебираем реальные ОформлениеДаты, переданные коллекцией события.

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

  1. 15-е число видимого месяца недоступно, подсказка объясняет учебный перерыв.

  2. В соседнем месяце действует тот же день месяца; оформление предыдущего месяца не переносится по абсолютной дате.

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

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

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

  1. Не переносите ЭлементыФормы в модуль управляемой формы.

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

  3. Запись базы, отправка сообщений, печать и код 1С при сборке HTML не выполнялись.

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

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

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

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

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