Имя: Пароль:
1C
1С v8
Как в управляемой форме, создать документ и открыть его форму (обычную, не управляемую)
0 TDI
 
05.10.21
12:43
Есть управляемая форма,
нужно на форме разместить кнопку, по которой создается и заполняется документ, и открывается его форма.
Форма документа обычная, не управляемая.
Как это сделать ?
1 ДенисЧ
 
05.10.21
12:44
док = Документы.Ляляля.СоздатьДокумент();
док.ПолучитьФорму().Открыть();
2 TDI
 
05.10.21
12:53
(1) это на сервере ? там же ничего не отразится
3 DimVad
 
05.10.21
13:05
(0) Ну, если документик можно записать а потом формочку открывать - всё просто. На сервере записали, ссылочку в клиента вернули...
4 TDI
 
05.10.21
13:12
(3) нельзя записывать
5 DimVad
 
05.10.21
13:16
(4) Тогда никак, мне кажется. Поэтому я бы придумал логику в которой записывать было бы можно :-)
6 Ёпрст
 
05.10.21
13:20
(0)


&НаКлиенте
Процедура ВВестиАктОтказа(Команда)
    ДокТвой=Документы.Нужный.СоздатьДокумент();
    ДокТвой.Реквизит=....;
    Форма = ДокТвой.ПолучитьФорму();
    Форма.ЭлементыФормы.Хрень.Доступность=Ложь;
    Форма.ЭлементыФормы.Хрень2.ТолькоПросмотр=Истина;
    Форма.Открыть();
7 Ёпрст
 
05.10.21
13:21
Это если открывать обычную форму.
8 polosov
 
05.10.21
13:21
(0) При открытии формы передать в нее параметры, которые она должна будет заполнить. Открываемая форма должна сама позаботиться об обработке передаваемых параметров.
9 hhhh
 
05.10.21
13:22
(6) на клиенте не работает СоздатьДокумент()
10 acht
 
05.10.21
13:24
(9) ТС хочет из управляемой открыть обычную. Догадайся - в каком виде клинета это происходит?
11 fisher
 
05.10.21
13:27
(0) Как минимум, нужно для начала включить в свойствах конфы "Использовать обычные формы в управляемом приложении" и запускать 1С в режиме "Толстый клиент (управляемое приложение)"
12 fisher
 
05.10.21
13:31
(11) + А потом как обычно.
ПолучитьФорму(), заполнить, Открыть().
13 fisher
 
05.10.21
13:46
А, или у тебя использование управляемых форм в обычном приложении?
Ну, тогда тоже самое. Глобальное ПолучитьФорму() должно работать во всех режимах.
14 TormozIT
 
гуру
06.10.21
08:06
Если хочется на сервере создать объект и потом на клиенте открыть его обычную форму, то на сервере сериализуем ДокументОбъект в строку и передаем на клиент. На клиенте из строки десериализуем тот же объект и у него зовем ПолучитьФорму().
15 acht
 
06.10.21
11:07
(14) > сериализуем ДокументОбъект в строку
Поосторожней с терминологией.

А то набегут неофиты и будут кричать "мутабельные объекты можно сериализовывать, дядька Тормозит разрешил!" =)
16 TormozIT
 
гуру
06.10.21
11:57
(15) ДокументОбъект
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Данный объект может быть сериализован в/из XML. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: DocumentObject.<Имя документа>.
17 acht
 
06.10.21
12:20
(16)
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Если ЭтотОбъект.МояЭкспортнаяПеременная <> 1 Тогда
        Отказ = Истина;
        ЭтотОбъект.ПолучитьФорму("Нет доступа").Открыть();
    КонецЕсли;
КонецПроцедуры