понедельник, 13 февраля 2017 г.

Сохранение значений реквизитов внешних обработок через КомпоновщикНастроекКомпоновкиДанных

Чтобы сохранить значения реквизитов внешней обработки нужно использовать КомпоновщикНастроекКомпоновкиДанных.

Создаем в обработке реквизит КомпоновщикНастроекКомпоновкиДанных




В форму обработки вставляем следующий код (Листинг):


#область СохранениеНастроек

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

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

Если Настройки = Неопределено Тогда
Настройки = Новый Соответствие;
КонецЕсли;

//Сюда вставляем значения реквизитов которые нужно сохранить
//Настройки.Вставить("", );
//Настройки.Вставить("", );
//Настройки.Вставить("", );

//Так сохраняем табличные части
//ТЗт = Новый ТаблицаЗначений;
//ТЗт.Колонки.Добавить("");
//ТЗт.Колонки.Добавить("");

//Для Каждого СТР ИЗ  Цикл
// НовСтр = ТЗт.Добавить();    
// НовСтр. = СТР.;
// НовСтр. = СТР.;
//КонецЦикла;
//Настройки.Вставить("ТЗ", ТЗт);

ЗаписьXML = Новый ЗаписьXML();                              
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента("Отборы");

СериализоватьОтбор(Объект.Компоновщик.Настройки.Отбор.Элементы, ЗаписьXML);

ЗаписьXML.ЗаписатьКонецЭлемента();
ХранилищеНастроек = ЗаписьXML.Закрыть();

Настройки.Вставить("Отбор", ХранилищеНастроек);

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

&НаСервере
Процедура  ВосстановитьНастройки(Настройки)
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
//Данной конструкцией востанавливаем реквизиты
//Если Настройки.Получить("СтатьиЗатрат") <> Неопределено Тогда
//
// СтатьиЗатрат = Настройки.Получить("СтатьиЗатрат");
//
//КонецЕсли;

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

КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура  СериализоватьОтбор(пОтбор, ЗаписьXML) Экспорт 

Для Каждого цЭлементОтбора Из пОтбор Цикл

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, цЭлементОтбора);

КонецЦикла;

КонецПроцедуры // СериализоватьОтбор()

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
СохранитьДанныеВНастройках();
КонецПроцедуры

#КонецОбласти

Комментариев нет:

Отправить комментарий