![]() |
![]() |
|
Как открыть форму с передачей параметров, и на выходе получить параметры | ☑ | ||
---|---|---|---|---|
0
Пендальф Серый
06.06.11
✎
11:52
|
Добрый день. В ходе выполнения процедуры необходимо открыть для юзера форму, передав туда параметры для автоматического заполнения. Юзер может перезаполнить реквизиты по своему или оставить как есть. Затем если юзер нажимает кнопку ОК - форма закрывается и процедура идёт дальше, иначе поцедура не идёт дальше. Подскажите как это сделать. А то Форма.Открыть() без параметров идёт. Потом как считать какую кнопку юзер нажал непонятно.
|
|||
1
Пендальф Серый
06.06.11
✎
12:10
|
в 8 если что
|
|||
2
Defender aka LINN
06.06.11
✎
12:13
|
ППЦ... ОткрытьМодально()
|
|||
3
fisher
06.06.11
✎
12:14
|
Можно использовать модальную форму.
Но красивее использовать режим выбора в обычной форме и результат обрабатывать в ОбработкаВыбора() главной формы. |
|||
4
МишельЛагранж
06.06.11
✎
12:16
|
(2), (3) да ладно вам, заклевали ))
(0) получаете объект той формы, обращаетесь к нему (до открытия еще), передаете напрямую исходные значения. Открываете модально, пользователь меняет значения (даже реквизитов не надо - все можно считать напрямую с элементов управления), снимаете новые значения, закрываете форму, и - проверка "Если .. Тогда в основной форме. |
|||
5
МишельЛагранж
06.06.11
✎
12:20
|
+4) если во вспомогательной форме обрабатывать событие ОсновныеДействияФормыСохранить, то можно и параметр передать обратно по Закрыть(Параметр).
или структуру параметров - как хотите )) |
|||
6
Reset
06.06.11
✎
12:22
|
(5) "ОсновныеДействияФормыСохранить". Подробней, пожалуйста, про новое событие. Хочу знать.
|
|||
7
МишельЛагранж
06.06.11
✎
12:45
|
(6) не получается получить такое событие? ай-яй-яй..
|
|||
8
Пендальф Серый
06.06.11
✎
13:06
|
Хотелось бы пояснить, а то я никак в толк не возьму. Мне не форму списка для выбора надо открывать. У меня форма с тремя реквизитами. Форма открывается, реквизиты заполнены по умолчанию. Юзер форму закрывает (реквизиты меняет или оставляет) - эти три реквизита передаются дальше процедуре.
|
|||
9
МишельЛагранж
06.06.11
✎
13:13
|
(8) а что пояснить хотелось? ))
|
|||
10
fisher
06.06.11
✎
13:24
|
(8) Режим выбора у формы - очень универсальная штука. Его можно использовать не только для выбора из списка, но и просто по кнопке вызвать ОповеститьОВыборе(<ЗначениеВыбора>)
ЗначениеВыбора может быть любым. Если владелецем формы в режиме выбора выступает элемент управления, то значение выбора будет записано прямо в него (с вызовом обработчика ПриИзменении). Если форма - будет вызвано событие обработки выбора. |
|||
11
МишельЛагранж
06.06.11
✎
13:31
|
(10) вот тут уже я не догоняю:
>>"Если владелецем формы в режиме выбора выступает....форма - будет вызвано событие обработки выбора." Какая форма выступает владельцем, как, и где и какое событие выбора происходит? |
|||
12
fisher
06.06.11
✎
13:42
|
1) У любой формы может быть владелец (есть соотв. свойство, которое может заполняться явно или неявно). Это влияет на поведение формы (если закрывается форма-владелец, подчиненная форма также закрывается).
2) Владельцем формы может выступать другая форма или элемент управления другой формы. 3) Если в форме, которая находится в режиме выбора, происходит выбор - она передает значение выбора своему владельцу. Если владелец - другая форма, то в форме-владельце инициируется событие "ОбработкаВыбора". Если владелец - элемент управления другой формы, то значение выбора пишется в него и инициируется событие "ПриИзменении" элемента управления. |
|||
13
МишельЛагранж
06.06.11
✎
13:48
|
(12) пункт 3 - не могу представить выбор в подчиненной форме из формы-"владельца" помимо какого-либо элемента управления. Открылась форма - тут же открылась подчиненная?
|
|||
14
Reset
06.06.11
✎
13:59
|
(13) Вы же писали в (4) "получаете объект той формы, обращаетесь к нему (до открытия еще), передаете напрямую исходные значения. "
Причем тут "Открылась форма - тут же открылась подчиненная"? Ваши вопросы еще более запутаны, чем ответы :) |
|||
15
Reset
06.06.11
✎
14:02
|
+ (14) (13) В форме владельце в необходимый момент открывается подчиненная форма, которая может генерировать у своего владельца событие ОбработкаВыбора.
Впрочем, в (12) все написано уже. |
|||
16
МишельЛагранж
06.06.11
✎
14:04
|
(14) форма открывается из какого-либо элемента в любом случае.
И форма выбора появилась в (10), хотя ТС снова поправил всех в (8). |
|||
17
МишельЛагранж
06.06.11
✎
14:05
|
(15) вот мне и интересно, как у вас ОбработкаВыбора идет ранее события ЭУ ПриИзменении, а если не идет - то зачем вообще оно нужно?
|
|||
18
Reset
06.06.11
✎
14:07
|
(17) Повторюсь, в (12) все расписано очень четко.
|
|||
19
fisher
06.06.11
✎
14:09
|
(16)
Использовать режим выбора я предложил в (3). Насколько я понял, с этим и был связан вопрос в (8) Мне непонятно, что вам непонятно. Я разжевал уже дальше некуда. Впрочем, если подтянутся еще непонимающие - готов признать крах своих преподавательских способностей и обработать прожеванное еще и желудочным соком. |
|||
20
МишельЛагранж
06.06.11
✎
14:19
|
(19) я как раз увидел не режим выбора, а открытие допформы, где реквизиты могут поменяться, а могут и не поменяться.
Т.е. выбор как таковой здесь не обязателен. (19) насчет преподавательских способностей - т.к. вы повторяете уч.материалы 1С, то и винить надо не себя )) Разве что укорить, что не своими словами )) |
|||
21
fisher
06.06.11
✎
14:51
|
(20) Если речь об уточнении данных пользователем уже в процессе исполнения основного алгоритма - то остается только модальная форма.
Но обычно такая потребность - результат плохого проектирования интерфейса. Модальные окна вообще слишком часто используют не к месту, ухудшая юзабилити. Если же речь вообще о получении данных через доп-форму - то режим выбора именно для этого и придумывался. И спасибо за комплимент, ибо объяснял я как раз своими словами. Делать это настолько сумбурно как вы, я уже не умею. |
|||
22
МишельЛагранж
06.06.11
✎
15:45
|
(21) вот и плохо, что вы загнали себя в узкие рамки 1С. и простое объяснение вам уже кажется сумбурным.
Вот вам надо выбрать толщину - как выбирать будете? А еще - длину и ширину. Понятно, что друг с другом эти параметры не связаны и выбираются независимо друг от друга. И нет справочников, а есть некие диапазоны ограничения, хранимые где-то там в регистрах. Вам нужно: дать пользователю диапазон, допинформацию для анализа и возможность принять решение. Какую форму выбора напишите? Или скажете - "результат плохого проектирования интерфейса" и так "делать я уже не умею"?? )) |
|||
23
fisher
06.06.11
✎
16:55
|
(22) Ну и? Где здесь прямая необходимость в модальных окнах?
|
|||
24
fisher
06.06.11
✎
16:56
|
(23) + Почему пользователь должен принимать решение именно в модальном окне?
|
|||
25
Reset
06.06.11
✎
17:01
|
(24) Да не ведись ты на тролля. Да еще на его уровне. На любую твою фразу он ответит десятком не связанных фактов и вопросов. Ты утонешь :)
|
|||
26
Luhtas
06.06.11
✎
17:02
|
(0)
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Отбор=Новый Структура("ДокументОснование", ПараметрКоманды); ПараметрыФормы = Новый Структура("Отбор", Отбор ); ОткрытьФорму("Документ.Заправка.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры Потом в модуле формыобъекта пишем: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("ЗначенияЗаполнения") И ТипЗнч(Параметры.ЗначенияЗаполнения) = Тип("Структура") И Параметры.ЗначенияЗаполнения.Свойство("ДокументОснование") И ЗначениеЗаполнено(Параметры.ЗначенияЗаполнения.ДокументОснование) Тогда Ссылка=Параметры.ЗначенияЗаполнения.ДокументОснование; Объект.ДокументОснование = Ссылка; Объект.Организация=Ссылка.Организация; Объект.ТранспортноеСредство=Ссылка.ТранспортноеСредство; Объект.РегистрационныйЗнак=Ссылка.РегистрационныйЗнак; Объект.Водитель=Ссылка.Водитель; НоваяСтрока=Объект.Топливо.Добавить(); НоваяСтрока.Наименование=ОбщегоНазначения.ПолучитьРеквизитыОбъекта(Ссылка.ТранспортноеСредство, "ОсновноеТопливо"); Отбор=Новый Структура("Наименование, Дата", НоваяСтрока.Наименование, Ссылка.Дата); НоваяСтрока.Цена=ПолучитьЦенуКонтрагента(Отбор); КонецЕсли; УстановитьВидимостьОбъектов(); Объект.Ответственный=ПараметрыСеанса.ТекущийПользователь; Если Не ЗначениеЗаполнено(Объект.Организация) Тогда Объект.Организация=Константы.ОсновнаяОрганизация.Получить(); КонецЕсли; КонецПроцедуры С кнопками ничего не предложу, пока не силен в кнопках... |
|||
27
Luhtas
06.06.11
✎
17:09
|
(12) - Класс!
|
|||
28
МишельЛагранж
06.06.11
✎
18:32
|
(24) а в каком тогда окне он должен принимать решение?
|
|||
29
fisher
06.06.11
✎
20:21
|
(28) В смысле, "тогда"? Если нет необходимости в модальном окне? Очевидно, что в немодальном.
|
|||
30
МишельЛагранж
06.06.11
✎
20:27
|
(29) т.е. открыл окно - и переключайся по всем остальным? а тут параметры уже вводить и не надо? )
|
|||
31
fisher
06.06.11
✎
20:38
|
(30) Если предмет спора тебе интересен - опиши ПОДРОБНО сценарий, который тебе представляется в случае немодального окна и я скажу, в чем именно ты не прав. Или признаю собственную неправоту.
А то такое впечатление, что у тебя в мозгу какая-то фантастическая картинка или специфический частный случай и все мои рассусоливания как об стенку горохом. Я про Фому, а ты про Ерёму. До завтра. |
|||
32
МишельЛагранж
06.06.11
✎
22:30
|
(31) тебе два человека пишут - есть главная форма, есть маленькие формочки по параметрам (почему отдельными формочками - тоже писали), открываются модально (почему - пост (30) ), ты уивеждаешь, что необходимости нет как в модальном окне, так и вообще в допфорамх - достаточно формавыбор и далее по твоему сценарию )))
|
|||
33
fisher
07.06.11
✎
10:23
|
(32) Я утверждаю, что допформы правильнее открывать в немодальном режиме (по кнопке). А для возврата результата в главную форму удобно использовать ОповеститьОВыборе().
Что такое "формавыбор" без допформы - теряюсь в догадках. |
|||
34
Rusty Nail
07.06.11
✎
10:29
|
(33) чел просто маны принципиально не курит, а ты перед ним выеживаешься )
|
|||
35
МишельЛагранж
07.06.11
✎
10:48
|
(33) разницы между
ПараметрыПолученные = Форма.ОткрытьМодально(); ФормаКнопкаОК Закрыть(Параметры); КонецПроцедуры и ПараметрыПолученные = Форма.ОткрытьМодально(); ФормаВыборСделан ОповеститьОВыборе(Параметры); КонецПроцедуры НЕТ НИКАКОЙ |
|||
36
МишельЛагранж
07.06.11
✎
11:03
|
+(35) плюс еще Событие ОбработкаВыбора в форме-владельце.
Так в чем преимущество? (34) забудьте слово "маны" в 1С - или просто так, красиво звучит?? |
|||
37
fisher
07.06.11
✎
11:06
|
(35) Во втором случае не нужно открывать модально.
Достаточно Форма.Открыть() Ну и владельца не забыть указать. (36) Преимущество - в немодальности. |
|||
38
МишельЛагранж
07.06.11
✎
11:23
|
(37) тогда немодальную форму можно "забыть" за другими формами...
или в чем тогда недостаток модальности? |
|||
39
fisher
07.06.11
✎
12:28
|
(38) Любую форму можно "забыть". Так построй весть интерфейс на модальных окнах. Тебе удобно будет в нем работать? Нет? А почему? Вот по этим же самым причинам блокирование работы пользователя рамками конкретного окна без явной на то необходимости - как минимум моветон. И вообще, я устал показывать на пальцах очевидные вещи. В дискуссии с вами больше не вступаю. Утомительно и бесполезно. Удачи.
wiki:%CC%EE%E4%E0%EB%FC%ED%EE%E5_%EE%EA%ED%EE |
|||
40
МишельЛагранж
07.06.11
✎
12:41
|
Мы спорим об очевидных вещах.
Основная форма - немодальная, допформа - модальная. Причем тут "весь интерфейс на модальных окнах"?? Вы привели пример некой "плюшки" от 1С, которая ничем не отличается от нормальной реализации передачи параметра (причем все явно и четко видно, что и откуда - кстати, в обработке ФормаВыбора и все связанное с обработкой выбора не прокатит - там её просто нет). И форма выбора - их может быть несколько, что опять же влечет усложнение ОбработкаВыбора и рост ошибок (по сравнению с вызвал модальную форму - получил данные - работаешь дальше). А вот 1С усиленно избегает всякой прозрачности, впрочем, как и вы в данном споре. И модальные окна придуманы лишь за тем - чтобы не было неопределенности: либо ввел данные, либо закрыл форму. Все. И никаких рассуждений - "ну стройте весь интерфейс на модальных окнах" и "вы теряете преимущество ". Если надо либо четко ввести данные - либо закрыть форму, нет никакого преимущества немодальности. |
|||
41
fisher
07.06.11
✎
12:56
|
(40) Да-да-да, о могучий и великий. В 1С одни идиоты, да и вообще идиоты заполонили.
Ведь у них, дебилов, все формы выбора ссылочных типов данных по умолчанию немодально открываются! Их же все забыть можно! Запутаться - раз плюнуть! И никакой определенности нет! А ведь надо же четко - ввести данные, либо закрыть форму! Очевидно же, что модально выбирать надо! Распустили операторов, свободу им гадам подавай! Что, начальнику нужно срочно цифру из уже открытого отчета сказать? Погоди начальник - модальная форма уже наполовину заполнена... |
|||
42
Reset
07.06.11
✎
13:02
|
(41) Никогда ты ослу не сможешь доказать, что он осел. Это в принципе лежит за его рамками понимания. Смирись )
|
|||
43
МишельЛагранж
07.06.11
✎
13:03
|
(41) :))
(42) как вы... с любимой 1С.... нехорошо... а ведь защищали когда-то... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |