Стандартные механизмы сохранения пользовательских данных ("настроек") имеют недостатки:
1. Работают только на компьютере пользователя (т.к. хранятся в папке пользователя, а не в базе)
2. Настройки теряются при динамическом обновлении или смене компьютера
в 8.2 эта проблема решена механизмом платформы
для 8.1 используются встроенные в типовые конфигурации механизмы хранения (регистр сведений "СохраненныеНастройки") для создания более универсальных функций сохранения настроек и сохранения универсальности приходится проверять, какие методы доступны и использовать оптимальные (код ниже)
Интерфейсы использования функций такие же, как и у СохранитьЗначение/ВосстановитьЗначение принцип действия прост, если доступны методы сохранения типовых конфигураций 1С используются они иначе платформенные
Фунции гл_ВосстановитьЗначение; гл_СохранитьЗначение - замена СохранитьЗначение;ВосстановитьЗначение, ТекущийПользовательВСправочникеПользователи; НеДоступныМеханизмыСохраненияНастроекВКонфигурации - вспомогательные
Процедура гл_СохранитьЗначение(ИмяНастройки, ЗначениеНастройки) Экспорт
Если НедоступныМеханизмыСохраненияНастроекВКонфигурации() Тогда
СохранитьЗначение(ИмяНастройки, ЗначениеНастройки);
Иначе
НаименованиеНастройки = "Основная";
ТекПользовательВСправочнике = ТекущийПользовательВСправочникеПользователи();
НаборЗаписей = РегистрыСведений.СохраненныеНастройки.СоздатьНаборЗаписей();
//Установка отборов
НаборЗаписей.Отбор.Пользователь.Установить(ТекПользовательВСправочнике);
НаборЗаписей.Отбор.ИмяОбъекта.Установить(ИмяНастройки);
//Добавление записи настройки в регистр
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ИмяОбъекта = ИмяНастройки;
НоваяЗапись.Пользователь = ТекПользовательВСправочнике;
НоваяЗапись.СохраненнаяНастройка = Новый ХранилищеЗначения(ЗначениеНастройки);
НоваяЗапись.НаименованиеНастройки = НаименованиеНастройки;
НаборЗаписей.Записать();
КонецЕсли;
КонецПроцедуры
Функция гл_ВосстановитьЗначение(ИмяНастройки) Экспорт
Если НедоступныМеханизмыСохраненияНастроекВКонфигурации() Тогда
Возврат ВосстановитьЗначение(ИмяНастройки);
Иначе
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
| СохраненныеНастройки.СохраненнаяНастройка
|ИЗ
| РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
|ГДЕ
| СохраненныеНастройки.Пользователь = &Пользователь
| И СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
| И СохраненныеНастройки.НаименованиеНастройки = ""Основная""");
Запрос.УстановитьПараметр("Пользователь", ТекущийПользовательВСправочникеПользователи());
Запрос.УстановитьПараметр("ИмяОбъекта", ИмяНастройки);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
Иначе
СохраненноеЗначениеХранилище = Результат.Выгрузить()[0].СохраненнаяНастройка;
Возврат СохраненноеЗначениеХранилище.Получить();
КонецЕсли;
КонецЕсли;
КонецФункции
Функция ТекущийПользовательВСправочникеПользователи()
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
ИмяТекущегоПользователя = ? (ПустаяСтрока(ТекущийПользователь), "НеАвторизован", ТекущийПользователь);
Возврат Справочники.Пользователи.НайтиПоКоду(ИмяТекущегоПользователя);
КонецФункции
Функция НедоступныМеханизмыСохраненияНастроекВКонфигурации()
//Для доступности сохранения в конфигурация... должны присутствовать регистр сведений СохраненныеНастройки и справочник Пользователи
Возврат ( Метаданные.РегистрыСведений.Найти("СохраненныеНастройки") = Неопределено ИЛИ
Метаданные.Справочники.Найти("Пользователи") = Неопределено);
КонецФункции
p.s. Приходилось не раз использовать т.к. стадартные функции не сохраняют в ИБ, а механизмы типовых не универсальны