В собственном Пульте включим автосохранение одного учебного фильтра, проверим повторное открытие и покажем, почему сброс признака не возвращает прежнее значение.
Где и как запускать
Полный модуль своей управляемой формы ПультНастройки, не Пульт предыдущих уроков. Требуется будущий ручной цикл закрытия и открытия.
Подготовка
Создайте НОВУЮ отдельную файловую базу платформы 8.5.1.1343 с конфигурацией УчебныеДанныеФорм85, совместимость НеИспользовать, управляемое приложение. Не используйте УТ, КА, УНФ, БП или рабочую базу. Здесь 1С не запускалась: runtimeVerifiedScenarios=0.
В своей конфигурации создайте обработку УчебныеДанные85. Реквизит Примечание — Строка (80); табличная часть Строки: Код — Строка (8), Товар — Строка (64), Количество — Число (10,0). Обработчики модуля объекта оставьте пустыми. Эти данные существуют в экземпляре обработки в памяти, не в справочнике или документе.
Создайте у своей обработки отдельную пустую управляемую основную форму ПультНастройки без основного реквизита. Этот урок не использует динамические реквизиты предыдущих модулей и не требует регистра.
Реквизит формы Уч85Фильтр — Строка (64), свойство Сохраняемые данные=Да. Выведите его полем ввода. В свойствах формы Сохранение данных в настройках=Использовать список; Автоматическое сохранение данных в настройках=Не использовать. Это настройки данной своей формы, не настройки пользователя рабочей конфигурации.
Команда Выполнить, действие Выполнить; команда НеСохранять, действие НеСохранять — обе кнопки на форме. Назначьте ПриСозданииНаСервере, ПриСохраненииДанныхВНастройкахНаСервере и ПриЗагрузкеДанныхИзНастроекНаСервере одноимённым процедурам. Вставьте полный модуль, F7, обновление только своей базы.
Тестировать только под одним своим учебным пользователем, с одним окном ПультНастройки. Автосохранение затронет пользовательские параметры только этой новой формы. В этом чате сохранение настроек и запуск 1С не выполнялись.
Для первого опыта не редактируйте поле вручную и не выбирайте ручные команды Сохранить параметры/Восстановить параметры. Нажмите Выполнить, закройте это своё окно, снова откройте и проверьте Книга. Затем нажмите НеСохранять, закройте и снова откройте: ожидается ранее сохранённая Книга, не несохранённая Ручка.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойКонтекст();
ЭтотОбъект.СохранениеДанныхВНастройках = СохранениеДанныхФормыВНастройках.ИспользоватьСписок;
ЭтотОбъект.АвтоматическоеСохранениеДанныхВНастройках = АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать;
КонецПроцедуры
&НаКлиенте
Процедура Выполнить(Команда)
НастроитьСохранениеНаСервере(Истина);
Сообщить("Свой фильтр Книга изменён. Закройте эту форму: разрешено автоматическое сохранение только её параметров в новом стенде.");
КонецПроцедуры
&НаКлиенте
Процедура НеСохранять(Команда)
НастроитьСохранениеНаСервере(Ложь);
Сообщить("Свой фильтр Ручка остаётся на экране. Автосохранение выключено; Ложь в признаке модифицированности не возвращает прежнее значение фильтра.");
КонецПроцедуры
&НаСервере
Процедура НастроитьСохранениеНаСервере(Разрешить)
ПроверитьСвойКонтекст();
Если ТипЗнч(Разрешить) <> Тип("Булево") Тогда
ВызватьИсключение "Нужен явный собственный выбор режима";
КонецЕсли;
ЭтотОбъект.СохранениеДанныхВНастройках = СохранениеДанныхФормыВНастройках.ИспользоватьСписок;
Если Разрешить Тогда
ЭтотОбъект.Уч85Фильтр = "Книга";
ЭтотОбъект.АвтоматическоеСохранениеДанныхВНастройках = АвтоматическоеСохранениеДанныхФормыВНастройках.Использовать;
ЭтотОбъект.СохраняемыеВНастройкахДанныеМодифицированы = Истина;
Иначе
ЭтотОбъект.АвтоматическоеСохранениеДанныхВНастройках = АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать;
ЭтотОбъект.Уч85Фильтр = "Ручка";
ЭтотОбъект.СохраняемыеВНастройкахДанныеМодифицированы = Ложь;
КонецЕсли;
Если ЭтотОбъект.СохранениеДанныхВНастройках <> СохранениеДанныхФормыВНастройках.ИспользоватьСписок
Или ЭтотОбъект.СохраняемыеВНастройкахДанныеМодифицированы <> Разрешить Тогда
ВызватьИсключение "Настройка и признак модифицированности должны отражать выбранный режим";
КонецЕсли;
Если Разрешить Тогда
Если ЭтотОбъект.АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.Использовать Тогда
ВызватьИсключение "Автосохранение не включено";
КонецЕсли;
ИначеЕсли ЭтотОбъект.АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать Тогда
ВызватьИсключение "Автосохранение не выключено";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
ПроверитьСвойКонтекст();
Если ТипЗнч(Настройки) <> Тип("Соответствие") Тогда
ВызватьИсключение "Событие должно предоставить настоящие настройки своей формы";
КонецЕсли;
Сообщить(СтрШаблон("Платформа вызвала сохранение параметров своей формы. Значение фильтра: %1. Это не запись бизнес-объекта.", ЭтотОбъект.Уч85Фильтр));
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
ПроверитьСвойКонтекст();
Если ТипЗнч(Настройки) <> Тип("Соответствие") Тогда
ВызватьИсключение "Событие загрузки должно предоставить настоящие настройки";
КонецЕсли;
Сообщить(СтрШаблон("После загрузки параметров собственный фильтр: %1", ЭтотОбъект.Уч85Фильтр));
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеДанныеФорм85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедурыРазбор по шагам
СохранениеДанныхВНастройках — enum, не Булево. ИспользоватьСписок означает работу со списком реквизитов, отмеченных как сохраняемые; Уч85Фильтр отмечается в конфигураторе.
АвтоматическоеСохранениеДанныхВНастройках — другой enum. При создании формы автоматическое сохранение выключается, но режим ИспользоватьСписок остаётся: загрузка ранее сохранённого фильтра не выдаётся за новое сохранение.
Выполнить устанавливает свой фильтр Книга, включает автосохранение и явно ставит СохраняемыеВНастройкахДанныеМодифицированы=Истина. Код проверяет фактические enum и Булево; наличие dirty-флага само по себе ещё не доказывает сохранение.
Закрытие своего окна — отдельный необходимый шаг. Настройки сохраняет платформа, вызывая назначенный серверный обработчик с Соответствие; урок только показывает факт вызова, не пишет произвольные ключи хранилища.
После повторного открытия ожидается загруженная Книга. Обработчик ПриЗагрузкеДанныхИзНастроекНаСервере показывает текущее значение после загрузки, не имитирует загрузку прямым вызовом процедуры.
НеСохранять выключает автосохранение, меняет только локальный фильтр на Ручка и сбрасывает dirty-флаг в Ложь. Значение Ручка остаётся в форме: dirty-флаг не является откатом данных.
Закрываем и открываем своё окно ещё раз. Без нового сохранения ожидается прежняя Книга. Это проверяется настоящим циклом формы, а не утверждением по значениям трёх свойств.
Как проверить результат
Будущий тест №1: Выполнить → фильтр Книга → закрыть → открыть. Должна загрузиться Книга; событие сохранения должно быть назначено и реально вызвано.
Будущий тест №2: НеСохранять → на экране Ручка → закрыть → открыть. Ожидается Книга из предыдущего сохранения, не Ручка.
После НеСохранять dirty-флаг Ложь, но локальный фильтр остаётся Ручка. Не трактуйте это как восстановление Книги в текущем окне.
Если значение не восстанавливается, проверьте Сохраняемые данные реквизита, enum формы при конфигурировании, пользователя и назначение событий. Статические тесты этого урока не подтверждают работу пользовательского хранилища.
Не запускайте параллельные экземпляры с тем же именем формы: последнее закрытие может изменить сохранённые параметры. Автосохранение не является изоляцией конкурентных окон.
Ожидаемый результат
Будущий результат полного цикла: сохранённая Книга восстанавливается; локальная Ручка без автосохранения не заменяет её, сброс dirty-флага не откатывает экран.
На что обратить внимание
Dirty-флаг только сообщает модифицированность сохраняемых данных. Его Истина не заменяет настройку режима, а Ложь не восстанавливает прежние значения.
Выключение автосохранения не запрещает пользователю явно выполнить Сохранить параметры. В этом опыте такие команды не используются; запрет записи правами не заявлен.
Настройки формы — отдельная сохранённая информация пользователя, не документ или регистр. Здесь бизнес-данные не пишутся, но будущий ручной тест действительно сохраняет параметры своей новой формы.
Настройки не удаляются и чужой профиль не сбрасывается. Начните с нового стенда и нового имени формы; runtimeVerifiedScenarios остаётся 0 до отдельного разрешённого испытания.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.