официальный партнёр 1С по деловому софту
Закрыть
Логин:
Пароль:
Забыли свой пароль?
  Войти
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
 
8(495)229-30-42

Методы сохранения / восстановления настроек

Задача: Необходим механизм, позволяющий сохранять произвольные пользовательские данные (настройки). Настройки относятся к внешней обработке, вариант с изменением конфигурации не рассматривается. План видов характеристик трогать тоже нет желания.
В рамках заметки предложено два вариант работы с настройками пользователя.
[spoiler]
Ваиант 1
Сохранение настроек:
    
    ИмяНастройки = "ТЕСТ";
    ЗначениеНастройки = Новый Структура("Это настройки произвольного типа, к примеру структура", "");
   СохранитьЗначение(ИмяНастройки, ЗначениеНастройки) ;

ИмяНастройки - ключ настроек, тип “строка”.
значение - значение произвольного типа, возможность заманчивая, но не стоит слишком увлекаться и сохранять все подряд.
Восстановление настроек:
    ИмяНастройки = "ТЕСТ";
      ЗначениеНастройки = ВосстановитьЗначение(ИмяНастройки);
    Если ЗначениеНастройки = Неопределено Тогда
        Сообщить("Нет настройки с ключем ТЕСТ!");
    КонецЕсли;

ИмяНастройки - ключ настройки, тип “строка”
возвращает значение произвольного типа, сохраненное ранее.Если восстановить не удалось, возвращает “Неопределено”
Плюсы
прост в использовании
возможно сохранить настройки произвольного типа текущего пользователя в текущей информационной базе
Минусы
  • Только толстый клиент
  • Возможно работать ТОЛЬКО с настройками текущего пользователя

Вариант 2
Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант считаю наиболее удобным и гибким.
Объект доступен в глобальном контексте. Содержит следующие методы:
Сохранение настроек:
   // ключи могут быть произвольными строками
    КлючОбъекта  = "МИКО";
    КлючНастроек = "ПанельТелефонии";
    // настройки могут быть произвольного типа
    Настройки    = Новый Структура("Это настройки произвольного типа, к примеру структура", "");
    ИмяПользователя = ИмяПользователя();

    // имя пользователя - пользователь владелец настроек, если параметр не указать,
    // то настройки будут сохранены для ТЕКУЩЕГО пользователя
    ИмяПользователя = ИмяПользователя();
    Сохранить(КлючОбъекта,  КлючНастроек, Настройки, , ИмяПользователя);

Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:
   // получим имя
    ИмяТекущегоПользователя = ИмяПользователя();
    // в типовых конфигурация используется справочник "Пользователи"
    // в этом справочнике в стандартном реквизите "Код" обычно
    // хранят информацию по имени пользователя, пример получения имени:
    ИмяПользователя = Справочники.Пользователи.НайтиПоНаименованию("Администратор").Код;
    // обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
    ИмяПользователя = СокрП(ИмяПользователя);

Восстановление настроек:
   КлючОбъекта  = "МИКО";
    КлючНастроек = "ПанельТелефонии";
    ВладелецНастроек = ИмяПользователя();
    // Для восстановления настроек необходимо воспользоваться функцией Загрузить
    СтруктураНастроек = Неопределено;
    Попытка
        СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек,,ВладелецНастроек);
        // если настроек нет, то будет возвращено значение "Неопределено"
    Исключение
        Сообщить("Нет прав на восстановление настроек.");
    КонецПопытки;

    Если СтруктураНастроек = Неопределено Тогда
        Сообщить("Не вышло восстановить настройки!");
    КонецЕсли;

ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.
Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.
Необходимо право "АдминистрированиеДанных".
Пробелы справа игнорируются!

Плюсы
Возможно работать со значениями настроек других пользователей.
Доступность: Сервер, толстый клиент, внешнее соединение.
Получение всех ключей настроек по ключу объекта  
    // Пример получения всех настроек по ключу объекта
    КлючОбъекта = "MIKO";
    ВладелецНастроек = ИмяПользователя();
    Попытка
        // возвращает список значений
        // элементы списка - ключи настроек
        СтруктураНастроек = ХранилищеОбщихНастроек.ПолучитьСписок(КлючОбъекта, ВладелецНастроек);
    Исключение
        Сообщить("Нет прав на восстановление настроек.");
    КонецПопытки;

Подведем итог
В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).