Имя: Пароль:
1C
1С v8
УФ: Как правильно передать ДанныеФормы
0 agorbunov
 
02.04.13
10:35
Версия платформы 8.2.16.368.
Есть отчет (не внешний), у него две управляемых формы. В первой форме интерактивно устанавливаются настройки компоновщика. После этого открывается вторая форма:

   ФормаОтчета = ПолучитьФорму("Отчет.ИмяОтчета.Форма.ФормаОтчета", , ЭтаФорма, КлючУникальности);
   ФормаОтчета.ЗакрыватьПриЗакрытииВладельца = истина;
   КопироватьДанныеФормы(ЭтаФорма.Отчет, ФормаОтчета.Отчет);
   ФормаОтчета.Открыть();


В открывшейся форме видны все настройки, которые были сделаны в первой форме. Нажимаю кнопку на форме - и смотрю отладчиком:

&НаКлиенте
Процедура СформироватьОтчет(Команда)
   // Вставить содержимое обработчика.
   Вывод = СформироватьОтчетНаСервере();
КонецПроцедуры

&НаСервере
Функция СформироватьОтчетНаСервере()

Так вот на клиенте все у Отчет.КомпоновщикНастроек есть все отборы и доступные поля. Но когда управление переходит на сервер, то все настройки компоновщика теряются. Там нет ни доступных, ни выбранных полей.

Что я не так делаю?
1 agorbunov
 
02.04.13
10:37
(0)  Компоновщик инициализируется в первой форме так:

Отчет.АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет.АдресСхемы));
2 agorbunov
 
03.04.13
08:49
Пока единственное, что приходит в голову - во второй форме компоновщику заново загрузить настройки. Правда реализация этого получается совсем уж кривая. Получается, что необходимо сделать 2 контекстных серверных вызова и гонять настройки туда-сюда.

//Первая форма
&НаСервере
Функция ПолучитьНастройкиКомпоновки()
   Возврат Отчет.КомпоновщикНастроек.ПолучитьНастройки();
КонецФункции

//Вторая форма
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   Настройки = ЭтаФорма.ВладелецФормы.ПолучитьНастройкиКомпоновки();
   ЗагрузитьНастройкиКопоновки(Настройки);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНастройкиКопоновки(НастройкиКопоновки)
   Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет.АдресСхемы));
   Отчет.КомпоновщикНастроек.ЗакгрузитьНастройки(НастройкиКопоновки);
КонецПроцедуры


Есть идеи, как это сделать проще?