Ваиант 1
Сохранение настроек:
ИмяНастройки = "ТЕСТ";
ЗначениеНастройки = Новый Структура("Это настройки произвольного типа, к примеру структура", "");
СохранитьЗначение(ИмяНастройки, ЗначениеНастройки) ;
- ИмяНастройки - ключ настроек, тип “строка”.
- значение - значение произвольного типа, возможность заманчивая, но не стоит слишком увлекаться и сохранять все подряд.
Восстановление настроек:
ИмяНастройки = "ТЕСТ";
ЗначениеНастройки = ВосстановитьЗначение(ИмяНастройки);
Если ЗначениеНастройки = Неопределено Тогда
Сообщить("Нет настройки с ключем ТЕСТ!");
КонецЕсли;
- ИмяНастройки - ключ настройки, тип “строка”
- возвращает значение произвольного типа, сохраненное ранее.Если восстановить не удалось, возвращает “Неопределено”
Плюсы
- прост в использовании
- возможно сохранить настройки произвольного типа текущего пользователя в текущей информационной базе
Минусы
-
Только толстый клиент
- Возможно работать ТОЛЬКО с настройками текущего пользователя
Вариант 2
Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант наиболее удобным и гибким.
Объект доступен в глобальном контексте. Содержит следующие методы:
Сохранение настроек:
// ключи могут быть произвольными строками
КлючОбъекта = "MIKO";
КлючНастроек = "ПанельТелефонии";
// настройки могут быть произвольного типа
Настройки = Новый Структура("Это настройки произвольного типа, к примеру структура", "");
ИмяПользователя = ИмяПользователя();
// имя пользователя - пользователь владелец настроек, если параметр не указать,
// то настройки будут сохранены для ТЕКУЩЕГО пользователя
ИмяПользователя = ИмяПользователя();
ХранилищеОбщихНастроек.Cохранить(КлючОбъекта, КлючНастроек, Настройки, , ИмяПользователя);
Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:
// получим имя
ИмяТекущегоПользователя = ИмяПользователя();
// в типовых конфигурация используется справочник "Пользователи"
// в этом справочнике в стандартном реквизите "Код" обычно
// хранят информацию по имени пользователя, пример получения имени:
ИмяПользователя = Справочники.Пользователи.НайтиПоНаименованию("Администратор").Код;
// обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
ИмяПользователя = СокрП(ИмяПользователя);
Восстановление настроек:
КлючОбъекта = "MIKO";
КлючНастроек = "ПанельТелефонии";
ВладелецНастроек = ИмяПользователя();
// Для восстановления настроек необходимо воспользоваться функцией Загрузить
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек,,ВладелецНастроек);
// если настроек нет, то будет возвращено значение "Неопределено"
Исключение
Сообщить("Нет прав на восстановление настроек.");
КонецПопытки;
Если СтруктураНастроек = Неопределено Тогда
Сообщить("Не вышло восстановить настройки!");
КонецЕсли;
ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.
Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.
Необходимо право "АдминистрированиеДанных".
Пробелы справа игнорируются!
Плюсы
- Возможно работать со значениями настроек других пользователей.
- Доступность: Сервер, толстый клиент, внешнее соединение.
Получение всех ключей настроек по ключу объекта
// Пример получения всех настроек по ключу объекта
КлючОбъекта = "MIKO";
ВладелецНастроек = ИмяПользователя();
Попытка
// возвращает список значений
// элементы списка - ключи настроек
СтруктураНастроек = ХранилищеОбщихНастроек.ПолучитьСписок(КлючОбъекта, ВладелецНастроек);
Исключение
Сообщить("Нет прав на восстановление настроек.");
КонецПопытки;
Подведем итог
В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).