Применить выбор периода только после ОК

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

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

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

Полный модуль управляемой формы собственной обработки, толстый клиент с разрешёнными модальными вызовами.

Подготовка

  1. Собственная учебная база 8.5.1.1343, толстый клиент Windows. Создайте внешнюю обработку с управляемой формой, командой Выполнить и её кнопкой; вставьте весь модуль выбранного урока в форму.

  2. НастройкаПериода доступна толстому клиенту, не тонкому/веб-клиенту и не серверу. Урок не подключается к спискам документов и не меняет их отбор.

  3. Для урока с Редактировать нужен режим конфигурации, допускающий модальные вызовы. Не включайте его в рабочей конфигурации ради примера: выберите собственный учебный стенд с подходящим режимом.

  4. Фиксированные даты относятся к сентябрю 2026 года. В уроке со смещениями рабочая дата только читается, не изменяется.

&НаКлиенте
Процедура Выполнить(Команда)
    ПримененноеНачало = Дата(2026, 9, 1);
    ПримененноеОкончание = Дата(2026, 9, 30, 23, 59, 59);
    Период = Новый НастройкаПериода;
    Период.УстановитьПериод(ПримененноеНачало, ПримененноеОкончание, Ложь);
    Период.РедактироватьКакИнтервал = Истина;
    Период.РедактироватьКакПериод = Истина;
    Период.ВариантНастройки = ВариантНастройкиПериода.Интервал;
    Сообщить(Период.РедактироватьКакИнтервал И Период.РедактироватьКакПериод);
    Подтвержден = Период.Редактировать();
    Если Подтвержден Тогда
        ПримененноеНачало = Период.ПолучитьДатуНачала();
        ПримененноеОкончание = Период.ПолучитьДатуОкончания();
        Сообщить("ОК: применены учебные границы выбранного периода");
    Иначе
        Сообщить(ПримененноеНачало = Дата(2026, 9, 1));
        Сообщить(ПримененноеОкончание = Дата(2026, 9, 30, 23, 59, 59));
        Сообщить("Отмена: учебные границы не изменены");
    КонецЕсли;
    Сообщить(СтрШаблон("Начало=%1; окончание=%2", ПримененноеНачало, ПримененноеОкончание));
КонецПроцедуры

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

  1. РедактироватьКакИнтервал/РедактироватьКакПериод управляют видимостью вкладок. При двух доступных вкладках ВариантНастройки выбирает первоначально активную.

  2. Редактировать возвращает Булево: Истина только при ОК. Закрытие/отмена идут в ветку Иначе.

  3. Храним применённые границы отдельно от редактируемого объекта. Чтение новых границ происходит лишь после подтверждения.

  4. Мы не утверждаем, что сам объект диалога откатывает все внутренние изменения при отмене: пример защищает именно свои применённые значения.

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

  1. Первый запуск: поменяйте даты и нажмите Отмена. Две проверки неизменности дают Истина; итог остаётся сентябрём.

  2. Второй запуск: выберите 10–20 сентября и ОК. В итоговом сообщении должны быть подтверждённые границы.

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

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

Получен реальный сценарий диалога с явным разделением редактирования, подтверждения и применения.

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

  1. Модальный вызов нельзя использовать в тонком клиенте или при запрещённых модальных вызовах.

  2. Не читать и не применять getter после отмены без проверки результата Редактировать.

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

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

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

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

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