1С. Сохранение настроек обработки

Пользователи работают с обработкой, в которой часть параметров меняется очень редко, но параметры у каждого пользователя свои. Необходимо организовать сохранение настроек и их восстановление для определенных реквизитов. Сохранение и восстановление выполнять только по кнопкам на форме.

Решение

Для сохранения настроек воспользуемся хранилищем настроек. Если конфигурация позволяет, то можно создать свое хранилище, или же воспользоваться одним из системных. Считаем, что конфигурация типовая(не редактируется), в качестве хранилища будем использовать ХранилищеНастроекДанныхФорм.

Ранее уже работал с хранилищем в статье 1С. Очистка произвольных настроек из хранилища системных настроек.

В форме определим команду Сохранить настройки, в которой  вызовем метод Сохранить() указав ключ объекта, ключ настроек, сами настройки и пользователя:

&НаКлиенте
Процедура СохранитьНастройки(Команда)
	СохранитьНастройкиНаСервере();
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройкиНаСервере()

	// Подготовка структуры настроек для сохранения
	НастройкиОбработки = Новый Структура();
	НастройкиОбработки.Вставить("Реквизит1",		Объект.Реквизит1);
	НастройкиОбработки.Вставить("Реквизит2",		Объект.Реквизит2);
	НастройкиОбработки.Вставить("Реквизит3",		Объект.Реквизит3);	
	НастройкиОбработки.Вставить("ТабличнаяЧасть1", 	        Объект.ТабличнаяЧасть1.Выгрузить());
	
	// Сохранение настроек в хранилище
	ХранилищеНастроекДанныхФорм.Сохранить("Обработка_1", "НастройкиЗаполнения", НастройкиОбработки, , ПараметрыСеанса.ТекущийПользователь);
	
КонецПроцедуры

В форме определим команду Восстановить настройки, в которой  спросим про восстановление(пример с вопросом в режиме без модальных вызовов разбирал здесь) и при утвердительном ответе вызовем метод Загрузить() указав ключ объекта, ключ настроек и пользователя:

&НаКлиенте
Процедура ВосстановитьНастройки(Команда)
	
	Оповещение		= Новый ОписаниеОповещения("ВосстановитьНастройкиПродолжение", ЭтаФорма);
	ТекстВопроса	= НСтр("ru = 'Настройки будут замещены сохраненными ранее. Продолжить?'");
	
	ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);

КонецПроцедуры

&НаКлиенте
Процедура ВосстановитьНастройкиПродолжение(Ответ, ДополнительныеПараметры) Экспорт 
	
	Если Ответ = КодВозвратаДиалога.Да Тогда 
		ВосстановитьНастройкиНаСервере();
	КонецЕсли;	
	
КонецПроцедуры

&НаСервере
Процедура ВосстановитьНастройкиНаСервере()

	НастройкиОбработки = ХранилищеНастроекДанныхФорм.Загрузить("Обработка_1", "НастройкиЗаполнения", , ПараметрыСеанса.ТекущийПользователь);
	
	Если НастройкиОбработки = Неопределено Тогда 
		Возврат; // Нет сохраненных настроек
	КонецЕсли;
	
	// Восстановление настроек из хранилища
	Объект.Реквизит1	= НастройкиОбработки.Реквизит1;
	Объект.Реквизит2	= НастройкиОбработки.Реквизит2;
	Объект.Реквизит3	= НастройкиОбработки.Реквизит3;
	Объект.ТабличнаяЧасть1.Загрузить(НастройкиОбработки.ТабличнаяЧасть1);
	
КонецПроцедуры

В итоге у каждого пользователя есть возможность сохранить определенные настройки и при необходимости восстановить их. Можно реализовать сохранение нескольких настроек, если дать возможность указания имени настройки и передавать его при сохранении/восстановлении как ключ настроек.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *