Универсальное сохранение элементов форм (Поле ввода, флажок, табличное поле) для 8.х
Как же надоело каждый раз заполнять поля ввода, ставил галочки и заполнять табличные поля для своих обработок(отчетов).
Вот и написал универсальный алгоритм который сохраняет значения всех полей ввода, флажков и табличных полей.
- Описание
- Подробнее
Описание
Просто создадим в любой форме две кнопки «Сохранить», «Открыть». И создадим события при нажатии.
// Процедура сохранения
Процедура кнСохранить(Кнопка)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогВыбораФайла.Фильтр = «Файл сохраненной настройки (*.sav)|*.sav»;
ДиалогВыбораФайла.Заголовок = «Выберите файл»;
ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
ДиалогВыбораФайла.Расширение = «sav»;
ДиалогВыбораФайла.ИндексФильтра = 0;
ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Ложь;
Если ДиалогВыбораФайла.Выбрать() Тогда
ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
Настройка = Новый Соответствие();
Для Каждого Стр Из ЭлементыФормы Цикл
Если Строка(Стр)=«ПолеВвода» Тогда
Настройка.Вставить(Стр.Имя, Стр.Значение);
КонецЕсли;
Если Строка(Стр)=«Флажок» Тогда
Настройка.Вставить(Стр.Имя, Стр.Значение);
КонецЕсли;
Если Строка(Стр)=«ТабличноеПоле» Тогда
ТП_ДляСохранения = Новый ТаблицаЗначений;
Для Каждого Кол Из Стр.Колонки Цикл
ТП_ДляСохранения.Колонки.Добавить(Кол.Имя);
КонецЦикла;
Для Каждого аа Из Стр.Значение Цикл
вв=ТП_ДляСохранения.Добавить();
Для Каждого Кол Из Стр.Колонки Цикл
вв[Кол.Имя]=аа[Кол.Имя];
КонецЦикла;
КонецЦикла;
Настройка.Вставить(Стр.Имя, ТП_ДляСохранения);
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеВФайл(ИмяФайла, Настройка) Тогда
Предупреждение(«Настройка не сохранена!!!»);
КонецЕсли;
КонецПроцедуры
//Процедура Открытия
Процедура кнОткрыть(Кнопка)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Фильтр = «Файл сохраненной настройки (*.sav)|*.sav»;
ДиалогВыбораФайла.Заголовок = «Выберите файл»;
ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
ДиалогВыбораФайла.Расширение = «sav»;
ДиалогВыбораФайла.ИндексФильтра = 0;
ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина;
Если ДиалогВыбораФайла.Выбрать() Тогда
ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
Настройка = ЗначениеИзФайла(ИмяФайла);
Для Каждого Стр Из ЭлементыФормы Цикл
Если Строка(Стр)=«ПолеВвода» Тогда
Попытка
Стр.Значение = Настройка[Стр.Имя];
Исключение
КонецПопытки;
КонецЕсли;
Если Строка(Стр)=«Флажок» Тогда
Попытка
Стр.Значение = Настройка[Стр.Имя];
Исключение
КонецПопытки;
КонецЕсли;
Если Строка(Стр)=«ТабличноеПоле» Тогда
Попытка
Стр.Значение.Очистить();
ТП_ДляОткрытия = «»;
ТП_ДляОткрытия = Настройка[Стр.Имя];
Для Каждого Стп Из ТП_ДляОткрытия Цикл
СС=Стр.Значение.Добавить();
Для Каждого Кол Из Стр.Колонки Цикл
Попытка
СС[Кол.Имя]=Стп[Кол.Имя];
Исключение
КонецПопытки;
КонецЦикла;
КонецЦикла;
Исключение
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
