Создает неинициализированный объект диалога. Перед открытием диалога, если необходимо, можно установить требуемый стандартный период в свойстве Период.
Синтаксис
Новый ДиалогРедактированияСтандартногоПериода()Полное описание, параметры и ограничения
ДиалогРедактированияСтандартногоПериода.По умолчанию
ДиалогРедактированияСтандартногоПериода (StandardPeriodEditDialog)
По умолчанию
Доступен, начиная с версии 8.2.
Синтаксис:
Новый ДиалогРедактированияСтандартногоПериода()
Описание:
Создает неинициализированный объект диалога.
Перед открытием диалога, если необходимо, можно установить требуемый стандартный период в свойстве Период.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Дождаться выбора периода через асинхронный метод
РедактироватьАсинх возвращает Обещание. Ждать получает конечный результат: период по ОК или Неопределено по отмене.
Где и как запускать
Полный клиентский код модуля управляемой формы собственной учебной обработки. Процедуры уже включены; не вставляйте их в тело другого обработчика.
Подготовка
Создайте новую внешнюю обработку УчебныйПериод85 с управляемой формой. Используйте только учебную базу; сведения из документов/регистров не нужны.
В редакторе формы создайте реквизит ВыбранныйПериод типа СтандартныйПериод. Добавьте поле формы, связанное с этим реквизитом, чтобы видеть текущий выбор.
Создайте команду ВыбратьПериод, выведите её кнопкой и назначьте обработчик ВыбратьПериод. Вставьте полный код данного примера в модуль формы отдельно от прочих процедур.
Первое нажатие инициализирует пустой реквизит фиксированным февралем 2024. Последующие открытия редактируют отдельную рабочую копию ранее выбранного периода.
Используйте тонкий или толстый клиент платформы 8.5.1.1343. В локальной справке РедактироватьАсинх не указан для веб-клиента; для него используйте пример Показать с оповещением.
&НаКлиенте
Асинх Процедура ВыбратьПериод(Команда)
Если ТипЗнч(ВыбранныйПериод) <> Тип("СтандартныйПериод") Тогда
ВыбранныйПериод = Новый СтандартныйПериод(Дата(2024, 2, 1), КонецМесяца(Дата(2024, 2, 1)));
ИначеЕсли Не ЗначениеЗаполнено(ВыбранныйПериод.ДатаНачала)
Или Не ЗначениеЗаполнено(ВыбранныйПериод.ДатаОкончания) Тогда
ВыбранныйПериод = Новый СтандартныйПериод(Дата(2024, 2, 1), КонецМесяца(Дата(2024, 2, 1)));
КонецЕсли;
РабочийПериод = Новый СтандартныйПериод(ВыбранныйПериод.Вариант);
Если ВыбранныйПериод.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод Тогда
РабочийПериод.ДатаНачала = ВыбранныйПериод.ДатаНачала;
РабочийПериод.ДатаОкончания = ВыбранныйПериод.ДатаОкончания;
КонецЕсли;
Диалог = Новый ДиалогРедактированияСтандартногоПериода;
Диалог.Период = РабочийПериод;
Результат = Ждать Диалог.РедактироватьАсинх();
Если Результат = Неопределено Тогда
Сообщить("Отмена: выбранный период не изменён");
Возврат;
КонецЕсли;
ВыбранныйПериод = Результат;
Сообщить("Выбран вариант: " + Строка(ВыбранныйПериод.Вариант));
Сообщить(Формат(ВыбранныйПериод.ДатаНачала, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(ВыбранныйПериод.ДатаОкончания, "ДФ=dd.MM.yyyy HH:mm:ss"));
КонецПроцедуры
Разбор по шагам
Обработчик объявлен Асинх Процедура: в нём разрешён оператор Ждать.
Рабочий период отделён от подтверждённого выбора формы. Диалог редактирует рабочую копию.
Ждать получает результат обещания, поэтому после этой строки можно проверять отмену и свойства периода.
При отмене выходим до присваивания реквизита. При ОК сохраняем результат и выводим его обе границы.
Как проверить результат
ОК с новым интервалом обновляет поле ВыбранныйПериод и выводит даты.
Отмена после изменения рабочей копии не меняет подтверждённый реквизит формы.
В переменную Результат попадает конечный период или Неопределено, а не само Обещание.
Ожидаемый результат
Современный клиентский вариант последовательного кода выбора периода без callback-процедуры.
На что обратить внимание
Без Ждать переменная содержала бы обещание; обращаться к нему как к СтандартныйПериод нельзя.
Не копируйте код в серверную процедуру: диалог интерактивный и клиентский.
Доступность веб-клиента у разных асинхронных диалогов различается; проверяйте именно выбранный метод.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Выбрать период без модальности и сохранить выбор только по ОК
Показать возвращает управление сразу, а результат приходит в экспортную процедуру. Отмена возвращает Неопределено и не меняет прежний выбор.
Где и как запускать
Полный клиентский код модуля управляемой формы собственной учебной обработки. Процедуры уже включены; не вставляйте их в тело другого обработчика.
Подготовка
Создайте новую внешнюю обработку УчебныйПериод85 с управляемой формой. Используйте только учебную базу; сведения из документов/регистров не нужны.
В редакторе формы создайте реквизит ВыбранныйПериод типа СтандартныйПериод. Добавьте поле формы, связанное с этим реквизитом, чтобы видеть текущий выбор.
Создайте команду ВыбратьПериод, выведите её кнопкой и назначьте обработчик ВыбратьПериод. Вставьте полный код данного примера в модуль формы отдельно от прочих процедур.
Первое нажатие инициализирует пустой реквизит фиксированным февралем 2024. Последующие открытия редактируют отдельную рабочую копию ранее выбранного периода.
Этот вариант подходит для управляемого приложения без модальных вызовов; согласно справке Показать доступен также в веб-клиенте.
&НаКлиенте
Процедура ВыбратьПериод(Команда)
Если ТипЗнч(ВыбранныйПериод) <> Тип("СтандартныйПериод") Тогда
ВыбранныйПериод = Новый СтандартныйПериод(Дата(2024, 2, 1), КонецМесяца(Дата(2024, 2, 1)));
ИначеЕсли Не ЗначениеЗаполнено(ВыбранныйПериод.ДатаНачала)
Или Не ЗначениеЗаполнено(ВыбранныйПериод.ДатаОкончания) Тогда
ВыбранныйПериод = Новый СтандартныйПериод(Дата(2024, 2, 1), КонецМесяца(Дата(2024, 2, 1)));
КонецЕсли;
РабочийПериод = Новый СтандартныйПериод(ВыбранныйПериод.Вариант);
Если ВыбранныйПериод.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод Тогда
РабочийПериод.ДатаНачала = ВыбранныйПериод.ДатаНачала;
РабочийПериод.ДатаОкончания = ВыбранныйПериод.ДатаОкончания;
КонецЕсли;
Диалог = Новый ДиалогРедактированияСтандартногоПериода;
Диалог.Период = РабочийПериод;
Оповещение = Новый ОписаниеОповещения("ПослеВыбораПериода", ЭтотОбъект);
Диалог.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораПериода(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Сообщить("Отмена: ранее выбранный период не изменён");
Возврат;
КонецЕсли;
ВыбранныйПериод = Результат;
Сообщить("Выбран вариант: " + Строка(ВыбранныйПериод.Вариант));
Сообщить(Формат(ВыбранныйПериод.ДатаНачала, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(ВыбранныйПериод.ДатаОкончания, "ДФ=dd.MM.yyyy HH:mm:ss"));
КонецПроцедуры
Разбор по шагам
Инициализируем реквизит только если он ещё пуст. Создаём отдельный РабочийПериод, сохраняя относительный вариант или обе произвольные границы.
Период рабочей копии передаём в диалог. Показать не возвращает готовый выбор в текущую строку кода.
Экспортный обработчик с двумя параметрами вызывается по ОписаниеОповещения. Неопределено обрабатывается до чтения свойств.
Реквизит формы заменяем только после ОК. Так отмена не сохраняет изменения, сделанные пользователем в рабочей копии.
Как проверить результат
Выберите другой произвольный интервал и ОК: поле формы и сообщения показывают новый период.
Снова откройте диалог, измените границы и нажмите Отмена: поле формы должно сохранить предыдущий подтверждённый выбор.
Выберите относительный вариант ЭтотМесяц и подтвердите. При следующем открытии сохраняется вариант, а не принудительно превращается в произвольные даты.
Ожидаемый результат
Готовый клиентский сценарий немодального выбора периода с корректной отменой.
На что обратить внимание
После Диалог.Показать нельзя сразу присваивать ВыбранныйПериод=Диалог.Период: пользователь ещё не закончил.
Имя обработчика в строке и имя процедуры должны совпадать, процедура должна иметь Экспорт.
Пример меняет только реквизит учебной формы, не сохраняет настройки пользователя или отчёта в базе.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.