Имя: Пароль:
1C
1С v8
Открытие Управляемой формы обработки.
0 Rosi4
 
09.08.13
11:28
Всем привет. Столкнулся с такой ситуацией: При открытии упр. формы документа необходимо открыть модально форму обработки перед этим передав туда реквизит.
Реализовал это так:

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

Процедура ПриОткрытии()

ОбработкаИмущества = ПолучитьОбработкуНаСервере();

ОткрытьФормуМодально("Обработка.СозданиеИмуществаНаОснованииДокумента.Форма");
.......
При открытии реквизит пуст. Как правильно открыть форму именно созданной обработки?
1 ИсчадиеADO
 
09.08.13
11:31
на сервере обработку не получай
передавай в параметры формы (2ой реквизит метода открыть форму). Дальше из параметров доставай уже при создании формы на сервере
2 Rosi4
 
09.08.13
11:38
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    .....
КонецПроцедуры

как мне тут инициализировать переданные мною параметры?


Открыл форму так:

СтруктураОтбора    = Новый Структура;
СтруктураОтбора.Вставить("ДокументОснование",ДокОснование);

ОткрытьФормуМодально("Обработка.СозданиеИмуществаНаОснованииДокумента.Форма",СтруктураОтбора,ЭтаФорма);
3 ИсчадиеADO
 
09.08.13
11:40
В ПриСозданииНаСервере обращаешься к Параметры.  только проверь, существует ли такой параметр, если он не ключевой
4 Rosi4
 
09.08.13
11:53
А ты прав братишка. Спасибо большое.
5 Rosi4
 
09.08.13
11:56
А как потом при закрытии формы я смогу получить данные из обработки?

СтруктураОтбора    = Новый Структура;
СтруктураОтбора.Вставить("ДокументОснование",ДокОснование);

ОткрытьФормуМодально("Обработка.СозданиеИмуществаНаОснованииДокумента.Форма",СтруктураОтбора,ЭтаФорма);

//обработка закрылась , откуда читать данные формы, ведь мы же ее никуда не положили...
6 ИсчадиеADO
 
09.08.13
11:59
УправляемаяФорма (ManagedForm)
ОткрытьМодально (DoModal)
Синтаксис:

ОткрытьМодально(<Таймаут>)
Параметры:

<Таймаут> (необязательный)

Тип: Число.
Время показа формы в секундах, по истечении которого форма будет закрыта с параметром закрытия. Если значение параметра не задано, время показа не ограничено.
Значение по умолчанию: 0.
Возвращаемое значение:

Тип: Произвольный.
Команда закрытия формы.
Если форма открывалась для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено.


Возвращаемое значение:

Тип: Произвольный
7 Rosi4
 
09.08.13
12:02
У меня обработка формирует табличную часть, которую я хочу получить. Не совсем понял из описания метода как это сделать и возможно ли?
8 ИсчадиеADO
 
09.08.13
12:03
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;
    ЭтаФорма.Закрыть(Объект.ВозвращаемоеЗначение);
КонецПроцедуры
9 ИсчадиеADO
 
09.08.13
12:05
Хотя ты возвращаешь Таблицу значений?
10 Rosi4
 
09.08.13
12:06
Да, таблицу значений.
11 ИсчадиеADO
 
09.08.13
12:06
ее можно в массив структур преобразовать
12 ИсчадиеADO
 
09.08.13
12:06
т.к. возвращаешь на клиент, а там типа данных ТЗ нет
13 Rosi4
 
09.08.13
12:11
А если нам перед тем как открыть форму снаала получить ее.
как то так примерно:
Форма = ПолучитьФорму("Обработка.СозданиеИмуществаНаОснованииДокумента.Форма");
ОткрытьФормуМодально(Форма ,СтруктураОтбора,ЭтаФорма);
14 ИсчадиеADO
 
09.08.13
12:26
Тогда передавай владельца формы, если вызываешь из др.формы с ТЧ
это 3ий параметр ПолучитьФорму
15 olegves
 
09.08.13
12:42
(5) Результат = ОткрытьФормуМодально("Обработка.СозданиеИмуществаНаОснованииДокумента.Форма",СтруктураОтбора,ЭтаФорма);

В переменной Результат будет возвращаемое формой значение
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан