1C шаблоны и готовые решения

Май 29, 2015

Работа с механизмами: СохранитьЗначение и ВосстановитьЗначение в 1С

Filed under: — admin @ 5:44 дп

Нередко пользователю требуется сохранять значения выбранных полей в форме отчета или обработки, для повторного использования. Один из способов использование типовых механизмов 1С для «толстого клиента» (описание из справки 1С):

СохранитьЗначение(<Имя>, <Значение>) // Сохраняет значение для использования в текущем и последующих сеансах работы с программой.
ВосстановитьЗначение(<Имя>) // Получает значение, сохраненное ранее с помощью метода СохранитьЗначение

Одна из реализаций данного механизма на форме:
Добавляем в события ПриЗакрытии() и ПриОткрытии() формы следующий код:

Процедура ПриЗакрытии()
	//Сохранение поля типа дата 
	СохранитьЗначение("НачалоПериода",  НачалоПериода);	
	СохранитьЗначение("ОкончаниеПериода",  ОкончаниеПериода);	
	//Сохранение ссылочного поля 
	СохранитьЗначение("Контрагент",  Контрагент);	
	//Сохранение табличной части
	СохранитьЗначение("ТабличнаяЧасть", ТабличнаяЧасть.Выгрузить());	

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

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

Процедура УстановитьЗначение(СохраненноеЗначение, Значение)
	
	Если СохраненноеЗначение <> Неопределено Тогда
		Если Типзнч(СохраненноеЗначение) = Тип("ТаблицаЗначений") Тогда
			Значение.Загрузить(СохраненноеЗначение);
		Иначе	
			Значение = СохраненноеЗначение;
		КонецЕсли;	
	КонецЕсли;
	
КонецПроцедуры

Powered by WordPress

Яндекс.Метрика nikol_dn@list.ru