![]() |
![]() |
![]() |
|
v8.2 - Передача значений в другую форму | ☑ | ||
---|---|---|---|---|
0
badboychik
04.07.10
✎
09:29
|
Хочу из одной формы передать данные в другую. Вторая форма не привязана к справочникам. Пробовал создавать параметр на закладке, но не могу с клиента в него ничего записать. Попробовал открывать форму с передаваемым параметром, но нигде не написано как его взять в этой ОТКРЫТОЙ форме. Уже склоняюсь к глобальным переменным :(
|
|||
1
Armando
04.07.10
✎
11:15
|
>>но нигде не написано как его взять в этой ОТКРЫТОЙ форме
Параметры.ТвойПараметр |
|||
2
badboychik
04.07.10
✎
12:21
|
если бы так просто!.. пишет что поле не обнаружено.
запрашиваю его в процедуре на клиенте, которая выполняется при нажатии кнопки на форме. Сделал даже отдельную функцию на сервере, все равно не достучаться. В книге радченко ничего про параметры форм не сказано. МОжет лучше через реквизиты попробовать? |
|||
3
EvgeniuXP
04.07.10
✎
12:30
|
Форма=ПолучитьФорму("...");
Форма.ТвойРеквизит=ЗначениеТвоегоРеквизита; Форма.ОткрытьМодально(); - можно так |
|||
4
EvgeniuXP
04.07.10
✎
12:32
|
во второй строке только тип соблюдай (ДанныеФормы)
|
|||
5
Asmody
04.07.10
✎
12:35
|
это принципиальная позиция - не читать то, что написано в документации, хотя бы СП?
Глобальный контекст (Global context) ОткрытьФорму (OpenForm) Вариант синтаксиса: По названию Синтаксис: ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) Параметры: <ИмяФормы> (обязательный) Тип: Строка. Имя формы. Образуется как полный путь к объекту метаданных Форма (например, "Справочник.Контрагенты.Форма.ФормаОбъекта", "ОбщаяФорма.ФормаСохраненияФайла") или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, "Справочник.Товары.ФормаВыбора"). <Параметры> (необязательный) Тип: Структура. Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры. П = Новый Структура("Ключ", Поставщик); ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта", П); |
|||
6
YF
04.07.10
✎
12:46
|
(5) Только что попробовал - не работает:
Форма1 - команда: п = Новый Структура("Ключ", "Золотой ключик"); ОткрытьФорму("ОбщаяФорма.ФормаВторая", п); Форма2 - при открытии &НаКлиенте Процедура ПриОткрытии(Отказ) Сообщить(Параметры.Свойство("Ключ")); КонецПроцедуры Сообщает "Нет" |
|||
7
badboychik
04.07.10
✎
13:02
|
(6) во во, я также делаю
|
|||
8
EvgeniuXP
04.07.10
✎
13:10
|
а чем (3) не устраивает?
|
|||
9
Asmody
04.07.10
✎
13:38
|
(6) потому что неправильно делаешь. какое слово из [Тип: Структура. Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра] непонятно?
|
|||
10
Asmody
04.07.10
✎
13:39
|
(9)+ еще рекомендую почитать в СП про предопределенный параметр "Ключ"
|
|||
11
GROOVY
модератор
04.07.10
✎
13:40
|
Через временное хранилище еще можно, если много чего передавать надо.
|
|||
12
Asmody
04.07.10
✎
13:43
|
(11) тут на лицо конкретное непонимание основных механизмов, а ты им ВХ рекомендуешь. сейчс ведь посыпятся вопросы типа "как сделать глобальную переменную типа ХранилищеЗначения"
|
|||
13
Defender aka LINN
04.07.10
✎
13:45
|
(6) ПриОткрытии - не первая процедура, которая вызывается, если что.
|
|||
14
EvgeniuXP
04.07.10
✎
13:45
|
(0) автор передает данные формы, а что под ним подразумевает - непонятно, можно ключ передавать, можно реквизиты.
|
|||
15
YF
04.07.10
✎
17:00
|
(9) Вроде все слова понятные, видать не так как задумывали разработчики.
Ты объясни, я пойму. |
|||
16
Asmody
04.07.10
✎
17:08
|
(15) в форме на закладке Параметры создаешь параметр "МойПараметр". Затем в другой форме пишешь:
Параметры=Новый Структура("МойПараметр",ЗначениеПараметра); ОткрытьФорму(ИмяФормы, Параметры); |
|||
17
YF
04.07.10
✎
17:14
|
(16) Прикольно, а вот так работает без создания параметров:
Первая форма: &НаКлиенте Процедура ОткрытьФормуКомандой(Команда) // Вставить содержимое обработчика. п = Новый Структура("Креп", 123); ОткрытьФорму("ОбщаяФорма.ФормаВторая", п); КонецПроцедуры Вторая форма: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Крендель = Параметры.Креп; // Здесь крендель реквизит формы КонецПроцедуры Чесно говоря из описания в СП не понятно почему дальше создания на сервере параметр не живет + Создал в вызываемой форме пааметр "Креп", при открытии вызываю: Сообщить(Параметры.Свойство("Креп")); - все равно "Нет" говорит |
|||
18
EvgeniuXP
04.07.10
✎
17:18
|
(17) потому что клиент видит тип "ДанныеФормы".
|
|||
19
Эстет хренов
04.07.10
✎
17:21
|
может в 8.2 правильней использовать ОбработкаОповещения ?
|
|||
20
YF
04.07.10
✎
17:22
|
(18) Ну дык уже после открытия формы, по кнопке делаю следующее:
&НаКлиенте Процедура КомандаСообщитьПараметры(Команда) Сообщить(ПоКоманде()); КонецПроцедуры &НаСервере Функция ПоКоманде() Возврат Параметры.Свойство("Креп"); КонецФункции Опять говорит "Нет", если бы параметр был жив, то с сервера-то был бы виден, причем на данный момент я создал в форме параметр "Креп" как говорил (16) |
|||
21
Asmody
04.07.10
✎
18:16
|
(17) книга "Руководство разработчика", стр. 1-376, написано:
"После вызова обработчика ПриСозданииНаСервере все неключевые параметры формы удаляются из коллекции Параметры" |
|||
22
YF
04.07.10
✎
19:15
|
(21) Спасибо, что научил читать документацию. Может и автор почитает, а то совсем потерялся.
|
|||
23
EvgeniuXP
04.07.10
✎
19:15
|
тоже надо научиться читать :(
|
|||
24
badboychik
04.07.10
✎
21:11
|
(16) вот так получилось :)
(17) не получается без параметров - пишет что не найдено поле. В ИТОГЕ как сделал: // Первая форма с параметрами параметр1 и параметр2: // Обработчик кнопки ключ = новый структура("параметр1,параметр2",значение1,Значение2); ОткрытьФорму("ОбщаяФорма.ИмяФормы",Ключ); // Вторая форма с реквизитами рек1, рек2 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) рек1 = Параметры.Параметр1; рек2 = Параметры.Параметр2; КонецПроцедуры и потом в любом месте формы2 можно обращаться к реквизитам рек1 и рек2... P.S. А как код оформлять? в правилах и описании не нашел |
|||
25
badboychik
04.07.10
✎
21:12
|
код сам распознался, чудеса какието :)))
|
|||
26
Asmody
04.07.10
✎
21:17
|
(25) "Фрагменты программ рекомендуется отделять от основного текста пустыми строками, тогда они будут более точно распознаваться движком форума и раскрашиваться. Если фрагмент достаточно маленький (1-2 строки или не на языке 1С, то его можно отформатировать принудительно, заключив в теги
здесь фрагмент ). Эту возможность можно использовать только для фрагментов программ и таблиц, больше ни для чего. Нельзя так выделять обычные фразы, что рассматривается как нарушение сетевого этикета (правило №7)."
http://www.forum.mista.ru/about.php |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |