Глобальный контекст.ХранилищеСистемныхНастроек

Свойства · SystemSettingsStorage

Тип: СтандартноеХранилищеНастроекМенеджер. Содержит объект менеджера стандартного хранилища настроек, предназначенный для доступа к системным настройкам.

Полное описание, параметры и ограничения

Глобальный контекст.ХранилищеСистемныхНастроек (Global context.SystemSettingsStorage)

Глобальный контекст (Global context)

ХранилищеСистемныхНастроек (SystemSettingsStorage)

Доступен, начиная с версии 8.2.

Использование:
Только чтение.
Описание:
Тип: СтандартноеХранилищеНастроекМенеджер.
Содержит объект менеджера стандартного хранилища настроек, предназначенный для доступа к системным настройкам.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Посмотреть сохранённый профиль своего пользователя без перезаписи параметров

Читается известный ключ платформенных параметров из системного хранилища. Отсутствие записи не заменяется новым профилем и не считается ошибкой индекса.

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

Полный серверный общий модуль собственной учебной конфигурации. Не модуль запуска рабочей базы.

Подготовка

  1. Создайте серверный общий модуль УчебныеНастройкиКлиента в отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса. Флаг Сервер включён. Вставьте весь код одного выбранного урока.

  2. Из серверной команды собственной обработки вызовите УчебныеНастройкиКлиента.ВыполнитьПример(). Используйте платформу 8.5.1.1343: новые свойства 8.5 отсутствуют на старых релизах.

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

  4. Во всех опытах имя другого пользователя не передаётся. Первый урок только читает системный ключ текущего пользователя; следующие не перезаписывают этот системный ключ.

  5. Последний урок сохраняет один собственный профиль под учебным ключом в ХранилищеОбщихНастроек. Нужна роль с правом СохранениеДанныхПользователя; не включайте привилегированный режим ради опыта.

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

Процедура ВыполнитьПример() Экспорт
    Профиль = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения", "");
    Если Профиль = Неопределено Тогда
        Сообщить("У текущего учебного пользователя ещё нет сохранённого профиля; стандартные параметры не изменены");
        Возврат;
    КонецЕсли;
    Снимок = СнимокСвоегоПрофиля(Профиль);
    Сообщить(Снимок.Количество() = 10);
    Для Каждого Настройка Из Снимок Цикл
        Сообщить(Настройка.Ключ + ": " + Строка(Настройка.Значение));
    КонецЦикла;
    Сообщить("Это сохранённые параметры, а не измерение фактической раскладки открытого окна");
КонецПроцедуры

Функция СнимокСвоегоПрофиля(Профиль)
    Если ТипЗнч(Профиль) <> Тип("НастройкиКлиентскогоПриложения") Тогда
        ВызватьИсключение "Ожидался объект настроек клиентского приложения";
    КонецЕсли;
    Снимок = Новый Структура;
    Снимок.Вставить("ВариантИнтерфейсаКлиентскогоПриложения", Профиль.ВариантИнтерфейсаКлиентскогоПриложения);
    Снимок.Вставить("ВариантМасштабаКлиентскогоПриложения", Профиль.ВариантМасштабаКлиентскогоПриложения);
    Снимок.Вставить("ВариантМасштабаФормКлиентскогоПриложения", Профиль.ВариантМасштабаФормКлиентскогоПриложения);
    Снимок.Вставить("ВариантОткрытияОконКлиентскогоПриложения", Профиль.ВариантОткрытияОконКлиентскогоПриложения);
    Снимок.Вставить("ВариантОтображенияОсновногоОкнаКлиентскогоПриложения", Профиль.ВариантОтображенияОсновногоОкнаКлиентскогоПриложения);
    Снимок.Вставить("ОтображатьПанелиНавигацииИДействий", Профиль.ОтображатьПанелиНавигацииИДействий);
    Снимок.Вставить("ОтображатьПанельРазделов", Профиль.ОтображатьПанельРазделов);
    Снимок.Вставить("РежимОткрытияФормПриложения", Профиль.РежимОткрытияФормПриложения);
    Снимок.Вставить("СкоростьКлиентскогоСоединения", Профиль.СкоростьКлиентскогоСоединения);
    Снимок.Вставить("ТемаКлиентскогоПриложения", Профиль.ТемаКлиентскогоПриложения);
    Возврат Снимок;
КонецФункции

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

  1. Загрузить только пустой ключ настройки объекта Общее/НастройкиКлиентскогоПриложения для текущего пользователя.

  2. Если записи нет, вывести объяснение и закончить, не сохранять значения по умолчанию вместо отсутствующей записи.

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

  4. Вывести имена и фактические значения; ВариантМасштабаКлиентскогоПриложения только читается.

  5. Сопоставить с собственными сохранёнными параметрами. Режим запуска, клиент и параметры конфигурации также влияют на фактический внешний вид.

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

  1. При наличии записи первая проверка Истина, затем десять строк с именами параметров.

  2. При отсутствии записи — понятное сообщение; ни новый профиль, ни сохранение в системном хранилище не выполняются.

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

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

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

  1. Системный ключ подтверждён чтением кода КА2 Progress: CommonModules/ПользователиСлужебный/Ext/Module.bsl, процедура УстановитьНачальныеНастройки. БСП не вызывается, зависимости от этого общего модуля нет.

  2. Не подставляйте имя чужого пользователя: это другая задача и потребует дополнительных прав.

  3. Создание нового НастройкиКлиентскогоПриложения не заменяет загрузку существующей сохранённой записи.

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

Снять снимок собственной истории выбора в новом учебном профиле

История выбора хранится общим непрозрачным объектом пользователя, а не отдельно по форме. Выбираем значения собственного перечисления, загружаем созданную платформой историю и сохраняем её снимок только на новом одноразовом стенде.

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

Полный модуль общей управляемой формы УчебныйПультНастроек85. Отдельная новая учебная база, новый учебный пользователь, толстый управляемый клиент Windows с интерфейсом Такси. Объекты настроек загружаются, сохраняются и проверяются только на сервере.

Подготовка

  1. Используйте новую отдельную пустую базу 8.5.1.1343. Имя конфигурации в корне дерева задайте УчебнаяКонфигурацияСинтаксиса, язык встроенного языка Русский, режим совместимости Не использовать, интерфейс Такси. Для каждого урока нужна своя новая копия этого пустого стенда.

  2. Создайте нового пользователя с точным именем guide-settings-5bd84f8c-6fa5-4870-82bb-5296cf0f9e55. Ранее под этим именем в этой базе никто не должен работать. В своей учебной роли разрешите СохранениеДанныхПользователя и открытие своих двух общих форм. Войдите под этим пользователем в толстом клиенте Windows, режим Управляемое приложение. В коде есть проверка имени базы и пользователя.

  3. Создайте две общие управляемые формы: УчебныйПультНастроек85 и УчебныйОбразецНастроек85. Пульт — обычная общая форма без расширения прикладного объекта. Образец — обычная общая форма без модуля, обработчиков и программной записи. Их точные имена обязательны.

  4. В пульте создайте строковые реквизиты ПрофильВида и ПрофильОкна длиной 128, КлючСнимка длиной 300, ИмяОбразца длиной 300, КлючИсточник и КлючОкнаОбразца длиной 500, УчебныйПользователь длиной 100. Создайте булевы СнимокСоздан и УрокЗавершен. На форме поля для этих служебных реквизитов не размещайте; АвтоматическоеСохранениеДанныхВНастройках оставьте НеИспользовать.

  5. В пульте создайте четыре команды ОткрытьОбразец, СнятьСнимок, ВосстановитьСнимок, ОчиститьУрок. Их клиентские действия — одноимённые процедуры полного модуля. У команд снимите ИзменяетСохраняемыеДанные. Перетащите команды на форму как четыре кнопки. Событие ПриСозданииНаСервере назначьте одноимённой процедуре.

  6. Весь код выбранного урока вставьте в модуль УчебныйПультНастроек85. Для запуска создайте общую команду ОткрытьУчебныйПультНастроек85 без параметра, учебную подсистему УчебныеНастройкиСтенд85 и включите в её командном интерфейсе эту общую команду. В модуль общей команды вставьте полностью:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйПультНастроек85");
    КонецПроцедуры
    Обновите конфигурацию учебной базы. В клиенте откройте свой учебный раздел и выполните эту команду. Образец отдельно не запускайте: кнопку открытия содержит пульт.

  7. Код создаёт строковые профили из UUID. Параметр КлючНазначенияИспользования является стандартным параметром формы; пользовательский параметр с таким именем не добавляйте. КлючСохраненияПоложенияОкна задаётся свойством уже полученной формы до Открыть. Источник строится из реального readonly ИмяФормы полученного собственного образца.

  8. Настройки формы формируются при закрытии образца. Снимок разрешён только после закрытия; СохранитьНастройкиПользователя вызывается в толстом управляемом клиенте и сохраняет настройки только этого нового учебного пользователя. На сервер передаются ключи, а не объекты НастройкиФормы/НастройкиОкна/НастройкиИсторииВыбора.

  9. В начале запишите выведенные ключи. Снимок сохраняется в ХранилищеСистемныхНастроек под отдельным UUID-ключом; повторная запись снимка запрещена. ОчиститьУрок удаляет только точные собственные ключи снимка, источника и окна текущего учебного пользователя, после чего повторное открытие этим пультом запрещено. Если сеанс аварийно завершился, проверяйте только записанные собственные ключи на этом стенде.

  10. Запуск в 1С не выполнялся. Здесь проверяются исходный модуль, сигнатуры, контексты и нативная справка. После опыта закройте пульт и завершите этот отдельный учебный сеанс. Автоматические настройки самого пульта могут остаться в профиле нового учебного пользователя; для полной утилизации стенда используйте свою одноразовую копию базы.

  11. В конфигураторе создайте перечисление УчебныеКниги85 со значениями Книга, Тетрадь, Блокнот. У метаданных перечисления оставьте ИсторияВыбораПриВводе=Авто. Новых элементов справочников, документов или записей регистров для урока не создавайте.

  12. В образце создайте реквизит УчебнаяКнига с типом ПеречислениеСсылка.УчебныеКниги85, поле ввода ПолеКниги с ПутьКДанным=УчебнаяКнига и заголовком Выбор собственной книги. Кнопка выпадающего списка — Авто. Поле не переводите в режим произвольного строкового списка. АвтоматическоеСохранениеДанныхВНастройках — НеИспользовать.

  13. При первом открытии сервер требует отсутствия ИсторияВыбора у строго нового учебного пользователя. Этот ключ общий для всех полей пользователя и может также включать участников обсуждений. Систему взаимодействия не подключайте; других форм выбора в этом сеансе не открывайте.

  14. Авто не гарантирует генерацию истории для каждого поля и набора значений. В нативном перечислении доступны только Авто и НеИспользовать; значения Использовать нет. Если источник не появился после реальных выборов и сохранения, зафиксируйте отрицательный результат и очистите созданные собственные ключи. Положительный путь продолжайте только при реальном объекте НастройкиИсторииВыбора.

&НаКлиенте
Перем СобственныйОбразец;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПроверитьУчебныйСеанс();
    ЭтаФорма.УчебныйПользователь = ИмяПользователя();
    ЭтаФорма.ПрофильВида = "guide-owned-form-" + Строка(Новый УникальныйИдентификатор);
    ЭтаФорма.ПрофильОкна = "guide-owned-window-" + Строка(Новый УникальныйИдентификатор);
    ЭтаФорма.КлючСнимка = "guide-owned-settings-snapshot-" + Строка(Новый УникальныйИдентификатор);
    ЭтаФорма.ИмяОбразца = "";
    ЭтаФорма.КлючИсточник = "";
    ЭтаФорма.КлючОкнаОбразца = "";
    ЭтаФорма.СнимокСоздан = Ложь;
    ЭтаФорма.УрокЗавершен = Ложь;
    ЭтаФорма.КлючНазначенияИспользования = "guide-owned-controller-" + Строка(Новый УникальныйИдентификатор);
    ЭтаФорма.КлючСохраненияПоложенияОкна = ЭтаФорма.КлючНазначенияИспользования;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючСнимка, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Случайный ключ снимка занят; ничего не записано";
    КонецЕсли;
    Сообщить("Собственный пользователь: " + ЭтаФорма.УчебныйПользователь);
    Сообщить("Собственный ключ снимка: " + ЭтаФорма.КлючСнимка);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПроверитьУчебныйСеанс()
    Если ИмяПользователя() <> "guide-settings-5bd84f8c-6fa5-4870-82bb-5296cf0f9e55" Тогда
        ВызватьИсключение "Нужен отдельный новый учебный пользователь";
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьОбразец(Команда)
    Если ЭтаФорма.УрокЗавершен Тогда
        ВызватьИсключение "Собственный опыт уже очищен; создайте новый пустой стенд";
    КонецЕсли;
    Если СобственныйОбразец <> Неопределено Тогда
        Если СобственныйОбразец.Открыта() Тогда
            ВызватьИсключение "Сначала закройте собственный образец";
        КонецЕсли;
    КонецЕсли;
    ПараметрыОбразца = Новый Структура("КлючНазначенияИспользования", ЭтаФорма.ПрофильВида);
    СобственныйОбразец = ПолучитьФорму("ОбщаяФорма.УчебныйОбразецНастроек85", ПараметрыОбразца, ЭтаФорма, Истина);
    Если СобственныйОбразец = Неопределено Тогда
        ВызватьИсключение "Собственная общая форма не получена";
    КонецЕсли;
    Если ТипЗнч(СобственныйОбразец) <> Тип("ФормаКлиентскогоПриложения") Тогда
        ВызватьИсключение "Нужна собственная управляемая форма";
    КонецЕсли;
    СобственныйОбразец.КлючСохраненияПоложенияОкна = ЭтаФорма.ПрофильОкна;
    СобственныйОбразец.РежимБлокировкиПриОткрытииОкна = РежимБлокировкиПриОткрытииОкнаФормы.БлокироватьВладельца;
    Если СобственныйОбразец.КлючНазначенияИспользования <> ЭтаФорма.ПрофильВида Тогда
        ВызватьИсключение "Стандартный параметр собственного профиля не применён";
    КонецЕсли;
    Если ЭтаФорма.КлючИсточник = "" Тогда
        ЭтаФорма.ИмяОбразца = СобственныйОбразец.ИмяФормы;
        ПодготовитьКлючиНаСервере();
    КонецЕсли;
    СобственныйОбразец.Элементы.ПолеКниги.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.Авто;
    СобственныйОбразец.Открыть();
    Сообщить(СобственныйОбразец.Открыта());
    Сообщить("Изменяйте только собственный образец и закройте его перед работой со снимком");
КонецПроцедуры

&НаСервере
Процедура ПодготовитьКлючиНаСервере()
    ПроверитьУчебныйСеанс();
    Если ЭтаФорма.ИмяОбразца <> "ОбщаяФорма.УчебныйОбразецНастроек85" Тогда
        ВызватьИсключение "Получено имя чужой формы";
    КонецЕсли;
    ЭтаФорма.КлючОкнаОбразца = ЭтаФорма.ИмяОбразца + "/" + ЭтаФорма.ПрофильОкна + "/Такси/НастройкиОкнаТонкогоКлиента";
    ЭтаФорма.КлючИсточник = "ИсторияВыбора";
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючИсточник, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Исходный профиль уже существует; начните на новом пустом стенде";
    КонецЕсли;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючОкнаОбразца, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Профиль окна уже существует; ничего не заменяется";
    КонецЕсли;
    Сообщить("Собственный источник: " + ЭтаФорма.КлючИсточник);
    Сообщить("Собственное окно: " + ЭтаФорма.КлючОкнаОбразца);
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьЗакрытыйОбразец()
    Если ЭтаФорма.УрокЗавершен Тогда
        ВызватьИсключение "Собственный опыт уже очищен";
    КонецЕсли;
    Если ЭтаФорма.КлючИсточник = "" Тогда
        ВызватьИсключение "Сначала откройте собственный образец";
    КонецЕсли;
    Если СобственныйОбразец <> Неопределено Тогда
        Если СобственныйОбразец.Открыта() Тогда
            ВызватьИсключение "Закройте собственный образец; настройки открытой формы ещё не сформированы";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СнятьСнимок(Команда)
    ПроверитьЗакрытыйОбразец();
    #Если ТолстыйКлиентУправляемоеПриложение Тогда
        СохранитьНастройкиПользователя();
        СнятьСнимокНаСервере();
    #Иначе
        ВызватьИсключение "Урок требует толстый клиент в режиме управляемого приложения";
    #КонецЕсли
КонецПроцедуры

&НаСервере
Процедура СнятьСнимокНаСервере()
    ПроверитьУчебныйСеанс();
    Если ЭтаФорма.СнимокСоздан Тогда
        ВызватьИсключение "Собственный снимок уже создан; он не перезаписывается";
    КонецЕсли;
    Настройки = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючИсточник, "", , ЭтаФорма.УчебныйПользователь);
    Если Настройки = Неопределено Тогда
        Сообщить("Собственной сохранённой настройки пока нет; снимок не создан");
        Возврат;
    КонецЕсли;
    Если ТипЗнч(Настройки) <> Тип("НастройкиИсторииВыбора") Тогда
        ВызватьИсключение "Источник имеет другой тип; снимок не создан";
    КонецЕсли;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючСнимка, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Ключ снимка уже занят; ничего не заменяется";
    КонецЕсли;
    ХранилищеСистемныхНастроек.Сохранить(ЭтаФорма.КлючСнимка, "", Настройки, , ЭтаФорма.УчебныйПользователь);
    ЭтаФорма.СнимокСоздан = Истина;
    ПрочитанныйСнимок = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючСнимка, "", , ЭтаФорма.УчебныйПользователь);
    Если ТипЗнч(ПрочитанныйСнимок) <> Тип("НастройкиИсторииВыбора") Тогда
        ВызватьИсключение "Снимок создан, но тип повторного чтения неверен; очистите собственный ключ";
    КонецЕсли;
    Сообщить("Тип источника: " + Строка(ТипЗнч(Настройки)));
    Сообщить("Тип собственного снимка подтверждён повторным чтением");
КонецПроцедуры

&НаКлиенте
Процедура ВосстановитьСнимок(Команда)
    ПроверитьЗакрытыйОбразец();
    #Если ТолстыйКлиентУправляемоеПриложение Тогда
        СохранитьНастройкиПользователя();
        ВосстановитьСнимокНаСервере();
    #Иначе
        ВызватьИсключение "Урок требует толстый управляемый клиент";
    #КонецЕсли
КонецПроцедуры

&НаСервере
Процедура ВосстановитьСнимокНаСервере()
    ПроверитьУчебныйСеанс();
    Если Не ЭтаФорма.СнимокСоздан Тогда
        ВызватьИсключение "Сначала создайте реальный собственный снимок";
    КонецЕсли;
    Снимок = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючСнимка, "", , ЭтаФорма.УчебныйПользователь);
    Если ТипЗнч(Снимок) <> Тип("НастройкиИсторииВыбора") Тогда
        ВызватьИсключение "Собственный снимок отсутствует или имеет другой тип";
    КонецЕсли;
    ХранилищеСистемныхНастроек.Сохранить(ЭтаФорма.КлючИсточник, "", Снимок, , ЭтаФорма.УчебныйПользователь);
    Восстановленное = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючИсточник, "", , ЭтаФорма.УчебныйПользователь);
    Если ТипЗнч(Восстановленное) <> Тип("НастройкиИсторииВыбора") Тогда
        ВызватьИсключение "Не подтверждён тип восстановленного собственного профиля";
    КонецЕсли;
    Сообщить("Тип восстановленного профиля подтверждён; откройте образец и проверьте поведение отдельно");
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьУрок(Команда)
    ПроверитьЗакрытыйОбразец();
    #Если ТолстыйКлиентУправляемоеПриложение Тогда
        СохранитьНастройкиПользователя();
        ОчиститьУрокНаСервере();
    #Иначе
        ВызватьИсключение "Урок требует толстый управляемый клиент";
    #КонецЕсли
КонецПроцедуры

&НаСервере
Процедура ОчиститьУрокНаСервере()
    ПроверитьУчебныйСеанс();
    ХранилищеСистемныхНастроек.Удалить(ЭтаФорма.КлючСнимка, "", ЭтаФорма.УчебныйПользователь);
    ХранилищеСистемныхНастроек.Удалить(ЭтаФорма.КлючИсточник, "", ЭтаФорма.УчебныйПользователь);
    Если ЭтаФорма.КлючОкнаОбразца <> ЭтаФорма.КлючИсточник Тогда
        ХранилищеСистемныхНастроек.Удалить(ЭтаФорма.КлючОкнаОбразца, "", ЭтаФорма.УчебныйПользователь);
    КонецЕсли;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючСнимка, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Собственный ключ снимка не очищен: " + ЭтаФорма.КлючСнимка;
    КонецЕсли;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючИсточник, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Собственный исходный профиль не очищен: " + ЭтаФорма.КлючИсточник;
    КонецЕсли;
    Если ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.КлючОкнаОбразца, "", , ЭтаФорма.УчебныйПользователь) <> Неопределено Тогда
        ВызватьИсключение "Собственный профиль окна не очищен: " + ЭтаФорма.КлючОкнаОбразца;
    КонецЕсли;
    ЭтаФорма.СнимокСоздан = Ложь;
    ЭтаФорма.УрокЗавершен = Истина;
    Сообщить("Все точные собственные ключи отсутствуют в хранилище; пульт больше не открывает образец");
КонецПроцедуры

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

  1. Откройте образец. Код получает настоящую подготовленную общую форму и назначает ИсторияВыбораПриВводе.Авто именно её ПолеКниги — свойству расширения поля ввода, а не readonly свойству метаданных перечисления.

  2. Через стандартную кнопку выпадающего списка выберите Книга, затем Блокнот; подтверждайте реальный интерактивный выбор, а не присваивайте реквизиту значение программно. Закройте образец.

  3. Нажмите СнятьСнимок. Толстый клиент сохраняет настройки нового пользователя, сервер читает ХранилищеСистемныхНастроек.Загрузить("ИсторияВыбора", "", , своё имя). Если результат Неопределено, снимок не записывается и положительный путь заканчивается здесь.

  4. При реальном объекте сервер проверяет НастройкиИсторииВыбора, сохраняет его под новым UUID-ключом снимка и перечитывает. Нельзя прочитать его внутренний список, заменить его СпискомЗначений или вызвать придуманный конструктор.

  5. Повторно откройте образец, выберите Тетрадь интерактивно и закройте. Запишите, появилась ли новая история в выпадающем списке: отображение и порядок зависят от режима Авто, поэтому порядок не является обещанным контрольным результатом.

  6. Нажмите ВосстановитьСнимок. Сервер возвращает непрозрачный объект только в ИсторияВыбора данного нового пользователя и повторно проверяет тип. Из-за внутреннего кеша клиента это само по себе не доказывает изменение выпадающего списка в уже работающем сеансе.

  7. Проверьте поведение в собственном образце отдельным повторным открытием. Если список в текущем сеансе не изменился, отметьте ограничение кеша; не повторяйте запись для другого пользователя и не объявляйте визуальное восстановление успешным.

  8. Закройте образец, выполните ОчиститьУрок. Команда удаляет точные записи снимка, ИсторияВыбора этого нового пользователя и его собственного окна, проверяет отсутствие в серверном хранилище и запрещает новый выбор через этот пульт.

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

  1. Отрицательный путь является допустимым: сообщение Собственной сохранённой настройки пока нет; снимок не создан, СнимокСоздан остаётся Ложь и команда восстановления отклоняется. Он не подтверждает получение НастройкиИсторииВыбора.

  2. Положительный путь требует сообщений Тип источника: НастройкиИсторииВыбора, подтверждения типа повторного чтения снимка и восстановленного профиля. Значения пользовательского перечисления выбираются вручную; предметные данные не записываются.

  3. Серверная очистка подтверждает отсутствие трёх точных записей на момент вызова. Она не очищает внутренний кеш истории работающего клиента; при выходе он может записать историю снова. Для полной утилизации используйте отдельную одноразовую копию базы, а не очистку рабочего пользователя.

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

Либо зафиксировано отсутствие генерации истории в режиме Авто, либо реальный объект собственной истории прошёл сохранение снимка и повторное чтение. Серверное восстановление типа отделено от неподтверждённого поведения клиентского кеша.

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

  1. Ключ ИсторияВыбора не содержит имя формы, КлючНазначенияИспользования или имя поля. Поэтому урок требует нового пользователя и нового стенда; перенос в рабочий профиль недопустим.

  2. У НастройкиИсторииВыбора нет публичных методов, свойств и конструктора. Содержимое истории невозможно перечислить через этот тип. ИсторияВыбораПриВводе.Авто не является принудительным включением; Использовать отсутствует в справке 8.5.1.1343.

  3. История выбора и текущее значение УчебнаяКнига — разные данные. Восстановление объекта истории не устанавливает реквизит формы и не создаёт элементы перечисления или справочника.

  4. Нативная справка не обещает сброс кеша истории после Сохранить/Удалить. Положительный результат повторного чтения не равен визуальному восстановлению; после завершения клиента история может быть автоматически записана повторно. Обе границы явно проверяются вручную на одноразовом стенде.

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

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

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

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

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