Найти тему

Сохранение и восстановление настроек формы УФ.

1. Данные процедуры должны быть универсальны и работают с не модальными функциями.

2. Данный код сохраняет существующую настройку формы в текстовый файл. и восстанавливает в настройку формы именованную вами.

3. Порядок действий

  • Добавляем код в форму
  • Добавляем кнопки сохранить настройки в файл и восстановить настройки из файла
  • Прикрепляем команды из кода ниже
  • Сохраняем настройки формы штатными средствами и именуем их
  • Нажимаем кнопку сохранить настройки в файл и выбираем настройки которые хотим сохранить
  • Готово

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

&НаСервере
Функция ПолучитьЗаначениеСтрокиВнутр(СписокНастроек)
Возврат ЗначениеВСтрокуВнутр(СписокНастроек);
КонецФункции

&НаКлиенте
Процедура ОкночаниеВыбораНастроек(ЗначениеВыбора, ДопПараметры) Экспорт
Если ЗначениеВыбора = Неопределено Тогда
ПоказатьОповещениеПользователя("Не выбрана настройка для сохранения");
Возврат;
КонецЕсли;

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
//каталог по-умолчанию, можно не указывать
Диалог.Фильтр = "Текстовый файл (*.txt)|*.txt|";

//Если пользователь не нажал кнопку ОТМЕНА в диалоге
Если Диалог.Выбрать() Тогда
//Полное имя файла – с учетом «пути к нему» (имени каталога к нему)
ИмяФайла = Диалог.ПолноеИмяФайла;
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(ПолучитьЗаначениеСтрокиВнутр(ПолучитьНастройку(ЗначениеВыбора.Значение)));
ТекстовыйДокумент.Записать(ИмяФайла);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВосстановитьНастройкиИзФайла(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
//каталог по-умолчанию, можно не указывать
Диалог.Фильтр = "Текстовый файл (*.txt)|*.txt|";

//Если пользователь не нажал кнопку ОТМЕНА в диалоге
Если Диалог.Выбрать() Тогда
//Полное имя файла – с учетом «пути к нему» (имени каталога к нему)
ИмяФайла = Диалог.ПолноеИмяФайла;
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяФайла);
ПоказатьВводСтроки(Новый ОписаниеОповещения("ВводНаименованияНастройки",ЭтаФорма,Новый Структура("ТекстНастроек",ТекстовыйДокумент.ПолучитьТекст())),,"Введите наименование настроек");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьЗаначениеИзСтрокиВнутр(СписокНастроек)
Возврат ЗначениеИзСтрокиВнутр(СписокНастроек);
КонецФункции

&НаКлиенте
Процедура ВводНаименованияНастройки(НаименованиеНастроек, ДопПараметры) Экспорт
// Процедура обработки оповещений должна быть экспортной, должна иметь как минимум 2 параметра
//Открываем стандартный диалог Windows выбора каталога/файла в режиме выбора файла на сохранение - ДиалогВыбораФайла 1С
Если Не ЗначениеЗаполнено(НаименованиеНастроек) Тогда
ПоказатьОповещениеПользователя("Не задано имя настройки");
Возврат;
КонецЕсли;
СохранитьНастройку(ДопПараметры.ТекстНастроек,НаименованиеНастроек)
КонецПроцедуры

&НаСервере
Функция СохранитьНастройку(ЗначениеВыбора,НаименованиеНастроек)
ОписаниеНастроек = Новый ОписаниеНастроек;
ОписаниеНастроек.КлючНастроек = НаименованиеНастроек;
ОписаниеНастроек.Представление = НаименованиеНастроек;
ОписаниеНастроек.КлючОбъекта = ЭтотОбъект.ИмяФормы;

Настройки = ПолучитьЗаначениеИзСтрокиВнутр(ЗначениеВыбора);
ХранилищеНастроекДанныхФорм.Сохранить(ЭтотОбъект.ИмяФормы,НаименованиеНастроек,Настройки,ОписаниеНастроек);
КонецФункции
#КонецОбласти

Данный код не претендует на чистоту и если есть какие пожелания прошу под кат.