ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаПолученияОписания

События · GetDescriptionProcessing

Возникает при получении описания настроек. В данном обработчике необходимо реализовать получение описания настроек.

Синтаксис

ОбработкаПолученияОписания(<КлючОбъекта>, <КлючНастроек>, <ОписаниеНастроек>, <Пользователь>)
Полное описание, параметры и ограничения

ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаПолученияОписания (SettingsStorageManager.<Storage name>.GetDescriptionProcessing)

ХранилищеНастроекМенеджер.<Имя хранилища> (SettingsStorageManager.<Storage name>)

ОбработкаПолученияОписания (GetDescriptionProcessing)

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

Синтаксис:
ОбработкаПолученияОписания(<КлючОбъекта>, <КлючНастроек>, <ОписаниеНастроек>, <Пользователь>)
Параметры:

<КлючОбъекта>
Тип: Произвольный.
Ключ объекта, для которого получается описание.

<КлючНастроек>
Тип: Произвольный.
Ключ настроек.

<ОписаниеНастроек>
Тип: ОписаниеНастроек.
Описание настроек.

<Пользователь>
Тип: Строка.
Идентификатор пользователя, для которого получается описание.
Если не указан или представляет пустую строку, то следует загружать настройки для текущего пользователя.
Описание:

Возникает при получении описания настроек.
В данном обработчике необходимо реализовать получение описания настроек.

Доступность:

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

Замечание:

Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
Использование в версии:

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

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

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

ОбработкаПолученияОписания: собственные настройки книг

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

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

Модуль менеджера собственного УчебныеНастройкиКниг, сервер / толстый клиент.

Подготовка

  1. В своей отдельной учебной конфигурации Общие → Хранилища настроек создайте УчебныеНастройкиКниг. Все четыре процедуры и функцию ключа разместите в его модуле менеджера. Это самостоятельное собственное хранилище, его не нужно назначать глобальным хранилищем конфигурации.

  2. Пример работает только со своим строковым ключом объекта УчебныеКниги. В стандартном внутреннем хранилище используется отдельное пространство СинтаксисУчебный.УчебныеКниги; чужие системные ключи не читаются и не перезаписываются.

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

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

  5. BSL, изменение своих настроек и запись в хранилище при сборке HTML не выполнялись. Показанный ручной опыт сохраняет только собственные учебные ключи.

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

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

  1. Создайте собственное хранилище и разместите весь модуль из блоков.

  2. В своей обработке выполните публичное сохранение / загрузку / изменение описания.

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

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

  1. В ОбработкаЗагрузки результат передаётся параметру Настройки; Возврат из процедуры не заменяет этот выходной параметр.

  2. Изменение представления не заменяет сохранённую структуру настроек. Для стандартного хранилища из ОписаниеНастроек используется Представление.

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

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

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

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

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

  2. Ключ объекта в этом учебном контракте строковый и заранее известен; не преобразуйте произвольные ссылки в строку ради универсального ключа.

  3. Проверка пространства своего ключа не является проверкой имени конфигурации или версии платформы.

  4. Сборка HTML не исполняет сохранение и не подтверждает запуск BSL.

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

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

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

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

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