Имя: Пароль:
1C
1С v8
УФ взять и открыть произвольную форму, что нельзя?
0 Web00001
 
10.05.13
15:35
Драсти все. Не могу понять. Есть произвольная форма у документа. Нужна для ввода некоторых значений. Не могу понять как ее открыть из формы этого документа. То есть ПолучитьФорму(), нельзя ОткрытьФормуМодально("Документ.ИмяДокумента.ИмяПроизвольнойФормы") нельзя, а что делать то?
1 zavrik
 
10.05.13
15:40
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
2 Web00001
 
10.05.13
15:44
(1)Не работает это в УФ:
Неизвестное имя формы. Имя: "Документ.ЗдесьИмяДокумента.ЗдесьИмяФормы"
3 milan
 
10.05.13
15:51
"Документ.ЗдесьИмяДокумента.Форма.ЗдесьИмяФормы"
4 Web00001
 
10.05.13
15:53
Действительно. Спасибо.
5 kosts
 
10.05.13
15:55
По новым веяниям фирмы 1С не рекомендует использовать модальные формы. Вместо них нужно использовать формы блокирующие владельца...
6 Web00001
 
10.05.13
16:04
Фирма 1С тут не причем, не следует использовать модальные формы без явной на то необходимости. Для выбора значения из формы существует ОбработкаВыбора.
7 kosts
 
10.05.13
16:06
(6) Я не про модальные-не модальные формы. А просто про то, что теперь модальные формы нужно по другому реализовывать.
8 Web00001
 
10.05.13
17:15
(7)Ок. Как?
9 Web00001
 
10.05.13
17:17
(7)гхм. Ты просто так тонко и остро пошутил. Ага. Смешно.
10 kosts
 
10.05.13
17:47
(9) Вроде не шутил.
http://v8.1c.ru/o7/201301nm/
11 Web00001
 
10.05.13
18:05
(10)Тоже интересно. Но не актуально, но интересно :)
12 kosts
 
10.05.13
18:21
(11) Пока не актуально...
13 Web00001
 
10.05.13
18:28
(12)Ближайшие несколько лет не актуально.
14 kosts
 
10.05.13
18:31
(13) Не спорю
15 Torquader
 
10.05.13
19:23
А тогда не подскажете как в УФ режиме проделать такой стандартный фокус - создать документ, заполнить его данными и открыть его основную форму - документ создаётся на сервере, а форму открыть можно только на клиенте, куда открытый документ передать нельзя.
16 zavrik
 
10.05.13
19:38
(15)
&НаСервере
Процедура        СоздатьЗаказыНаСервере()
.................................
КонецПроцедуры



&НаКлиенте
Процедура Далее(Команда)
   
       СоздатьЗаказыНаСервере();
17 NickOmsk
 
10.05.13
19:40
(16) он вроде хочет открыть форму
18 NickOmsk
 
10.05.13
19:47
(15) на клиенте ссылку созданного документа в параметры и открываешь форму документа с параметрами
19 Torquader
 
10.05.13
22:36
(16,17,18) Я хочу - создать документ (объект), заполнить его через присвоение, потом, не сохраняя, открыть его форму, чтобы пользователь посмотрел и решил, что с ним делать.
В семёрке - штатно так было нельзя; в восьмёрке - прекрасно делалось (с учётом присвоения номера при записи - вообще гладко), а в управляемых формах - на клиенте нельзя создать объект, а на сервере - открыть форму.
20 NickOmsk
 
10.05.13
22:51
(19) с какой стати нельзя создать на клиенте? Открываешь форму на клиенте для нового элемента, хочешь задействую обработку заполнения
21 NickOmsk
 
10.05.13
22:55
ОткрытьФорму("Справочник.Товары.ФормаОбъекта");
22 Torquader
 
11.05.13
00:17
(20) Это обходной способ - создаётся новый документ методом открытия его формы - после мы можем задать данные документа или даже реквизиты формы, но нужно отслеживать, что происходит на форме и как она заполняется.
Потом задача стоит - создавать документы, и только для тех, для кого не ясно что делать, открывать форму пользователю - остальные же просто сохраняются.
23 NickOmsk
 
11.05.13
01:15
(22) это нормальный способ, а "не обходной", если хочешь задать данные реквизитов пользуй обработку начального заполнения, если для пользователя не надо открывать док., то делай условие... Вообщем почитай Проф. разработка.
24 Web00001
 
11.05.13
02:22
(22)Тебе таки надо определиться хочешь ли ты создавать документы никому ничего не показывая или хочешь открывать форму не записывая документ.
25 Web00001
 
11.05.13
03:57
Потому, что подход будет разный, как создать и записать документ на сервере ты и знаешь. Вот так еще можно открыть форму и заполнить как записанный так и не записанный документ

&НаСервереБезКонтекста
Процедура ЗаполнитьОбъект(ЧтоЗаполнить)
   ЧтоЗаполнить.Сотрудник = Справочники.Сотрудники.НайтиПоКоду("000000077");
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
   Форма = ОткрытьФорму("Документ.АвансовыйОтчет.ФормаОбъекта");//Сюда можно передать ссылку и на существующий документ
   
   НовыйОбъект = Форма.Объект;
   ЗаполнитьОбъект(НовыйОбъект);
   КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
КонецПроцедуры
26 Torquader
 
12.05.13
18:23
Это и понятно - то есть сначала мы готовим данные для документов - анализируем, можем ли мы полностью сформировать документ, потом то, что можем, просто записываем, а то, что не можем - показываем.
Но, приходится делать кучу ненужных действий там, где было несколько строчек кода.
Да и вообще, вместо того, чтобы сделать два модуля - клиентский и серверный, как в нормальных системах, в 1С решили сделать всё через то, на чём сидят.
И в итоге программистам тоже приходится через это работать.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.