Редактировать синхронно возвращает Булево, а не сам период. Новый период берём из свойства диалога только при подтверждении ОК.
Где и как запускать
Полный клиентский код модуля управляемой формы собственной учебной обработки. Процедуры уже включены; не вставляйте их в тело другого обработчика.
Подготовка
Создайте новую внешнюю обработку УчебныйПериод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"));
КонецПроцедуры
Разбор по шагам
Подготавливаем отдельную рабочую копию периода и назначаем её диалогу.
Редактировать блокирует выполнение до закрытия и возвращает Истина по ОК, Ложь по отмене.
При Ложь выходим до изменения реквизита. При Истина берём период из Диалог.Период, не из булевой переменной.
Сопоставьте этот контракт с callback/асинхронным: там конечный результат — период либо Неопределено, здесь — флаг подтверждения.
Как проверить результат
В разрешённом учебном клиенте ОК обновляет реквизит, Отмена сохраняет прежнее значение.
Подтверждён имеет тип Булево, а ВыбранныйПериод после ОК — СтандартныйПериод.
Ожидаемый результат
Разобран контракт прежнего метода с явным ограничением режима и клиента.
На что обратить внимание
Не заменяйте Редактировать на РедактироватьАсинх без изменения обработки результата: Булево и период/Неопределено — разные контракты.
При запрете модальности это не универсальное решение; запрет не следует обходить изменением конфигурации.
Модальный пример оставлен для понимания существующего кода, а не как обязательный выбор для новой формы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.