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