ПолучитьОписание и УстановитьОписание работают с описанием; товар Книга и количество 3 остаются прежними.
Где и как запускать
Полный серверный общий модуль только собственной отдельной учебной базы; сохранение здесь реальное.
Подготовка
Только собственная отдельная учебная база 8.5.1.1343 с конфигурацией УчебнаяКонфигурацияСинтаксиса. Не запускайте уроки сохранения в КА2/УНФ/УТ/БП или их рабочем сеансе.
В своей учебной базе создайте пользователя с точным именем guide-owned-user и войдите под ним. В собственной учебной роли разрешите СохранениеДанныхПользователя. Не расширяйте права рабочего пользователя.
Создайте общий модуль УчебноеХранилищеНастроек с флагом Сервер. Каждый урок — отдельный полный модуль с ВыполнитьПример() Экспорт, вызванный из серверной учебной команды.
Уроки сохранения действительно пишут настройки в учебную базу. Новый ключ объекта содержит собственный UUID; перед записью проверяется отсутствие записи, после опыта удаляется только созданная запись.
Личный вариант использует стандартное хранилище общих настроек текущего учебного пользователя; вариант по умолчанию — только ХранилищеСистемныхНастроек.
При ошибке очистки сохраните сообщение с собственным ключом для точечной проверки в этой учебной базе. Не удаляйте все настройки и не подставляйте Неопределено в аргументы удаления.
Процедура ВыполнитьПример() Экспорт
ПользовательУрока = ИмяПользователя();
Если ПользовательУрока <> "guide-owned-user" Тогда
ВызватьИсключение "Войдите под собственным учебным пользователем guide-owned-user";
КонецЕсли;
КлючОбъекта = "guide-owned-settings-" + Строка(Новый УникальныйИдентификатор);
КлючНастроек = "guide-book-view";
Хранилище = ПолучитьСтандартноеХранилищеОбщихНастроек();
Отбор = Новый Структура("КлючОбъекта,КлючНастроек,Пользователь", КлючОбъекта, КлючНастроек, ПользовательУрока);
Проверка = Хранилище.Выбрать(Отбор);
Если Проверка.Следующий() Тогда
ВызватьИсключение "Новый ключ уже занят: никакая существующая настройка не заменяется";
КонецЕсли;
Описание = Новый ОписаниеНастроек;
Описание.КлючОбъекта = КлючОбъекта;
Описание.КлючНастроек = КлючНастроек;
Описание.Пользователь = ПользовательУрока;
Описание.Представление = "Учебный вид Книга, количество 3";
Описание.ДополнительныеСвойства.Вставить("Источник", "Собственная учебная обработка");
Настройки = Новый Структура("Товар,Количество,ПоказыватьСумму", "Книга", 3, Истина);
Создано = Ложь;
ОшибкаОперации = "";
ОшибкаОчистки = "";
Попытка
Хранилище.Сохранить(КлючОбъекта, КлючНастроек, Настройки, Описание, ПользовательУрока);
Создано = Истина;
ДоИзменения = Хранилище.ПолучитьОписание(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(ДоИзменения.Представление = "Учебный вид Книга, количество 3");
НовоеОписание = Новый ОписаниеНастроек;
НовоеОписание.Представление = "Учебная подпись обновлена, данные прежние";
Хранилище.УстановитьОписание(КлючОбъекта, КлючНастроек, НовоеОписание, ПользовательУрока);
ПослеИзменения = Хранилище.ПолучитьОписание(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(ПослеИзменения.Представление = "Учебная подпись обновлена, данные прежние");
Загружено = Хранилище.Загрузить(КлючОбъекта, КлючНастроек, , ПользовательУрока);
Сообщить(Загружено.Товар = "Книга");
Сообщить(Загружено.Количество = 3);
Исключение
ОшибкаОперации = ОписаниеОшибки();
КонецПопытки;
Если Создано Тогда
Попытка
Хранилище.Удалить(КлючОбъекта, КлючНастроек, ПользовательУрока);
Сообщить(Хранилище.Загрузить(КлючОбъекта, КлючНастроек, , ПользовательУрока) = Неопределено);
Исключение
ОшибкаОчистки = ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Если НЕ ПустаяСтрока(ОшибкаОперации) ИЛИ НЕ ПустаяСтрока(ОшибкаОчистки) Тогда
ВызватьИсключение "Ошибка учебной настройки " + КлючОбъекта + "/" + КлючНастроек
+ ": " + ОшибкаОперации + " Очистка: " + ОшибкаОчистки
+ " При неопределённом результате записи проверьте только этот собственный ключ в учебной базе";
КонецЕсли;
Сообщить("Собственная настройка удалена. Другие ключи и пользователи не затронуты");
КонецПроцедурыРазбор по шагам
После собственного сохранения читаем описание точного варианта и проверяем первоначальную подпись.
Создаём отдельное новое описание, заполняем только Представление, которое использует стандартный менеджер.
УстановитьОписание получает те же объект/вариант/пользователя; данные настройки повторно не сохраняем.
Получаем описание заново и независимо загружаем данные: подпись новая, значения прежние.
Важно: УстановитьОписание может создать отсутствующий вариант; потому наш урок сначала создаёт и проверяет собственную запись.
Как проверить результат
Четыре проверки подписи/данных и контроль удаления — Истина.
Новая подпись Учебная подпись обновлена, данные прежние; товар Книга, количество 3.
Ожидаемый результат
Разделены изменение описания и запись самих настроек.
На что обратить внимание
Не используйте чужой ключ: УстановитьОписание может менять или создавать запись.
Изменить подпись не означает применить настройки к форме.
Переименование пользователя может изменить доступ к старым пользовательским настройкам; пример этим не занимается.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.