ОписаниеНастроек.КлючНастроек

Свойства · SettingsKey

Тип: Произвольный. Содержит ключ настроек.

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

ОписаниеНастроек.КлючНастроек (SettingsDescription.SettingsKey)

ОписаниеНастроек (SettingsDescription)

КлючНастроек (SettingsKey)

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

Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит ключ настроек.
Доступность:

Сервер, толстый клиент, внешнее соединение.

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

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

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

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

Изменить подпись собственного варианта, не меняя его данные

ПолучитьОписание и УстановитьОписание работают с описанием; товар Книга и количество 3 остаются прежними.

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

Полный серверный общий модуль только собственной отдельной учебной базы; сохранение здесь реальное.

Подготовка

  1. Только собственная отдельная учебная база 8.5.1.1343 с конфигурацией УчебнаяКонфигурацияСинтаксиса. Не запускайте уроки сохранения в КА2/УНФ/УТ/БП или их рабочем сеансе.

  2. В своей учебной базе создайте пользователя с точным именем guide-owned-user и войдите под ним. В собственной учебной роли разрешите СохранениеДанныхПользователя. Не расширяйте права рабочего пользователя.

  3. Создайте общий модуль УчебноеХранилищеНастроек с флагом Сервер. Каждый урок — отдельный полный модуль с ВыполнитьПример() Экспорт, вызванный из серверной учебной команды.

  4. Уроки сохранения действительно пишут настройки в учебную базу. Новый ключ объекта содержит собственный UUID; перед записью проверяется отсутствие записи, после опыта удаляется только созданная запись.

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

  6. При ошибке очистки сохраните сообщение с собственным ключом для точечной проверки в этой учебной базе. Не удаляйте все настройки и не подставляйте Неопределено в аргументы удаления.

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

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

  1. После собственного сохранения читаем описание точного варианта и проверяем первоначальную подпись.

  2. Создаём отдельное новое описание, заполняем только Представление, которое использует стандартный менеджер.

  3. УстановитьОписание получает те же объект/вариант/пользователя; данные настройки повторно не сохраняем.

  4. Получаем описание заново и независимо загружаем данные: подпись новая, значения прежние.

  5. Важно: УстановитьОписание может создать отсутствующий вариант; потому наш урок сначала создаёт и проверяет собственную запись.

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

  1. Четыре проверки подписи/данных и контроль удаления — Истина.

  2. Новая подпись Учебная подпись обновлена, данные прежние; товар Книга, количество 3.

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

Разделены изменение описания и запись самих настроек.

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

  1. Не используйте чужой ключ: УстановитьОписание может менять или создавать запись.

  2. Изменить подпись не означает применить настройки к форме.

  3. Переименование пользователя может изменить доступ к старым пользовательским настройкам; пример этим не занимается.

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

Создать описание собственного учебного вида без сохранения

ОписаниеНастроек не является самим набором настроек. Стандартное хранилище при сохранении использует только его Представление.

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

Полный серверный общий модуль только собственной отдельной учебной базы; сохранение здесь реальное.

Подготовка

  1. Только собственная отдельная учебная база 8.5.1.1343 с конфигурацией УчебнаяКонфигурацияСинтаксиса. Не запускайте уроки сохранения в КА2/УНФ/УТ/БП или их рабочем сеансе.

  2. В своей учебной базе создайте пользователя с точным именем guide-owned-user и войдите под ним. В собственной учебной роли разрешите СохранениеДанныхПользователя. Не расширяйте права рабочего пользователя.

  3. Создайте общий модуль УчебноеХранилищеНастроек с флагом Сервер. Каждый урок — отдельный полный модуль с ВыполнитьПример() Экспорт, вызванный из серверной учебной команды.

  4. Уроки сохранения действительно пишут настройки в учебную базу. Новый ключ объекта содержит собственный UUID; перед записью проверяется отсутствие записи, после опыта удаляется только созданная запись.

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

  6. При ошибке очистки сохраните сообщение с собственным ключом для точечной проверки в этой учебной базе. Не удаляйте все настройки и не подставляйте Неопределено в аргументы удаления.

Процедура ВыполнитьПример() Экспорт
    ПользовательУрока = ИмяПользователя();
    Если ПользовательУрока <> "guide-owned-user" Тогда
        ВызватьИсключение "Войдите под собственным учебным пользователем guide-owned-user";
    КонецЕсли;
    КлючОбъекта = "guide-owned-settings-" + Строка(Новый УникальныйИдентификатор);
    КлючНастроек = "guide-book-view";
    Описание = Новый ОписаниеНастроек;
    Описание.КлючОбъекта = КлючОбъекта;
    Описание.КлючНастроек = КлючНастроек;
    Описание.Пользователь = ПользовательУрока;
    Описание.Представление = "Учебный вид Книга, количество 3";
    Описание.ДополнительныеСвойства.Вставить("Источник", "Собственная учебная обработка");
    Сообщить(ТипЗнч(Описание) = Тип("ОписаниеНастроек"));
    Сообщить(Описание.КлючОбъекта = КлючОбъекта);
    Сообщить(Описание.КлючНастроек = "guide-book-view");
    Сообщить(Описание.Пользователь = "guide-owned-user");
    Сообщить(Описание.Представление = "Учебный вид Книга, количество 3");
    Сообщить(Описание.ДополнительныеСвойства.Источник = "Собственная учебная обработка");
    Сообщить("Описание создано только в памяти; сохранение этим уроком не выполняется");
КонецПроцедуры

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

  1. Проверяем точную учебную конфигурацию и текущего учебного пользователя до подготовки данных.

  2. Новый ключ объекта содержит UUID; имя конкретного варианта задаётся отдельно как guide-book-view.

  3. Заполняем КлючОбъекта, КлючНастроек, Пользователь и Представление только нового объекта описания.

  4. ДополнительныеСвойства только для чтения как свойство, но её собственную структуру можно дополнить Вставить.

  5. Ничего не сохраняем. Поля описания не подменяют отдельные аргументы владения в методах менеджера.

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

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

  2. Никакой новый вариант настройки в базе этим уроком не создан.

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

Разобрана разница описания, технических ключей и будущих данных настройки.

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

  1. Представление — пользовательская подпись, не технический ключ.

  2. ДополнительныеСвойства нельзя считать автоматически сохранёнными стандартным менеджером: он использует только Представление.

  3. Не создавайте пользователя/роли в рабочей базе ради примера.

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

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

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

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

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