Имя: Пароль:
1C
 
Как отрыть управляемую форму в тонком клиенте?
, ,
0 SherifSP
 
23.03.17
21:30
Здравствуйте друзья, изучаю управляемые формы и столкнулся с проблемой открытия формы, буду благодарен за дельный совет.

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

&НаСервере
Процедура СоздатьДокументНаСервере()
    
    НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    НовыйДок.ОбработкаЗаполнения(Объект.Ссылка, Истина);
    ФормаДок = НовыйДок.ПолучитьФорму("ФормаДокумента");
    ФормаДок.Открыть();

КонецПроцедуры
1 wertyu
 
23.03.17
21:31
неправильно
2 SherifSP
 
23.03.17
21:31
(1) А как нужно?
3 wertyu
 
23.03.17
21:35
ОткрытьФорму(НазваниеФормы, ПараметрыФормы)
4 SherifSP
 
23.03.17
21:38
(3) Эта функция доступна только на клиенте
5 SherifSP
 
23.03.17
21:39
(3) У меня не получается вернуть НовыйДок с сервера на клиент
7 H A D G E H O G s
 
23.03.17
21:40
&НаКлиенте
Процедура ОткрытьФормуНового(Команда)
    Форма = ПолучитьФорму("Документ.ПродажаТоваровУслуг.Форма.ФормаДокумента");
    ДанныеФормы = Форма.Объект;
    ЗаполнитьНаСервере(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере(НовыйОбъект)
    НовыйОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000005");          
КонецПроцедуры
8 SherifSP
 
23.03.17
21:46
(7)
{Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента.Форма(307)}: Ошибка при вызове метода контекста (СоздатьДокументНаСервере)
    СоздатьДокументНаСервере(ДанныеФормы);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Текст: false
9 SherifSP
 
23.03.17
21:47
&НаКлиенте
Процедура СоздатьДокумент(Команда)
    
    ФормаДок = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая");
    ДанныеФормы = ФормаДок.Объект;
    СоздатьДокументНаСервере(ДанныеФормы);
    //КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    ФормаДок.Открыть();
    
КонецПроцедуры

&НаСервере
Процедура СоздатьДокументНаСервере(НовыйДок)
    
    НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    НовыйДок.ОбработкаЗаполнения(Объект.Ссылка, Истина);

КонецПроцедуры
10 PuhUfa
 
23.03.17
22:33
Делать начальное заполнение в

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

уже не модно?
11 H A D G E H O G s
 
23.03.17
23:27
(9) ты написал дичь. Разбирайся
12 AlvlSpb
 
24.03.17
00:30
(0) НаКлиенте у вас почти все правильно. Должно быть так:

&НаКлиенте
Процедура СоздатьДокумент(Команда)
    ФормаДок = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая");
    ДанныеФормы = ФормаДок.Объект;
    СоздатьДокументНаСервере(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, ФормаДок.Объект);
    ФормаДок.Открыть();
КонецПроцедуры

а на сервере кое чего не хватает (кстати, можно НаСерверБезКонтекста)

&НаСервереБезКонтекста
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);
Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.РеализацияТоваровУслуг"));
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ЗначениеВДанныеФормы(Док,ДанныеФормы);

Единственное, не могу проверить ваш путь к форме "Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая" Если верный, то все заработает