Имя: Пароль:
1C
 
Как передать параметры в другю форму?
0 Domovoi
 
30.09.10
14:40
Открыта форма. На ней есть кнопка. При нажатии на данную кнопку надо чтоб открылась другая форма и передалась туда ТЗ и соответственно когда закроется форма то чтоб данные по ТЗ передались назад?
1 Mitriy
 
30.09.10
14:43
какой знакомый вопрос...
2 Живой Ископаемый
 
30.09.10
14:43
ОткрываемаяФорма.ТЗКакРеквизитФормыИлиОбъекта=ТЗпараметр;
3 Domovoi
 
30.09.10
14:51
Что-то не совсем понятно. У меня форма элемента справочника номенклатура, при записи надо чтоб проверяла на задвойки и если есть таковы ты открывало другую форму которая так же принадлежит этому справочнику и передавала туда ТЗ.
1-форма - ФормаЭлемента
2-форма - ПоискДублей

Процедура ПередЗаписью
   ...
   ЭтотОбъект.ПолучитьФорму("ПоискДублей").ОткрытьМодально();
   ...
КонецПроцедуры

Я писал так но куда припихнуть передачу ТЗ не пойму.
4 Дарт Вейдер
 
30.09.10
14:54
НоваяФорма = ЭтотОбъект.ПолучитьФорму("ПоискДублей");
НоваяФорма.ТЗПараметр = ТЗПараметр;

где ТЗПараметр - реквизит открываемой формы
5 Domovoi
 
30.09.10
14:58
Спасибо. Вроде понял, а назад как вернуть? Тоже заводить реквизит?
6 Дарт Вейдер
 
30.09.10
15:04
(5) см. функцию ОповеститьОВыборе(<Значение выбора>)
7 Дарт Вейдер
 
30.09.10
15:07
т.е. будет вот так в главной форме
...
НоваяФорма = ЭтотОбъект.ПолучитьФорму("ПоискДублей");
НоваяФорма.ТЗПараметр = ТЗПараметр;
ТЗПараметр = НоваяФорма.ОткрытьМодально();
...

и вот так в подчиненной
...
ОповеститьОВыборе(ТЗПараметр);
...
8 Domovoi
 
30.09.10
15:08
Я понял. Спасибо. Буду пробовать.
9 Mitriy
 
30.09.10
16:10
(7) если форма открывается модально, то ОповеститьОВыборе на фиг не нужна...
10 Mitriy
 
30.09.10
16:14
Форма (Form)
Закрыть (Close)
Синтаксис:

Закрыть(<ПараметрЗакрытия>)
Параметры:

<ПараметрЗакрытия> (необязательный)

Тип: Произвольный. Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
Описание:

Закрывает форму. Если закрываемая форма была открыта в модальном режиме, то метод может передать команду закрытия методу, открывшему форму.
11 Вальдемар
 
30.09.10
16:23
Можно программно открыть форму, указав текущую форму как Владельца, тогда можно будет получить результат обратно
12 Вальдемар
 
30.09.10
16:25
(9) пока удавалось без оповещений обходится, указывал владельца и усё
13 Mitriy
 
30.09.10
16:28
(12) Закрыть(ТЗПараметр)
14 Domovoi
 
30.09.10
16:52
А если мне нужно новый параметры передать назад? Т.е. Из главной формы я передал ТЗ, а назад мне надо передать номер строки. То как это делается?
15 Domovoi
 
30.09.10
16:54
Точнее было б не плохо передать два параметра, "НомерСтроки" и "Отказ"
16 Дарт Вейдер
 
30.09.10
17:10
(15) да без разницы вообще
17 Дарт Вейдер
 
30.09.10
17:10
(15) в структуре передавай
18 Domovoi
 
30.09.10
17:11
А как получать в главной форме?
19 Domovoi
 
30.09.10
17:11
+(18)Если я передаю в новой переменной
20 Ayvengo
 
30.09.10
17:12
Еще можно поизвращаться и через сохранение и восстановление значений а потом очистку их в нужный момент :D
21 Дарт Вейдер
 
30.09.10
17:13
(18) точно также
СтруктураРезультат = НоваяФорма.ОткрытьМодально();
СтруктураРезультат.НомерСтроки
СтруктураРезультат.Отказ

ты же передаешь не сами переменные, а значения переменных
22 Domovoi
 
30.09.10
17:16
(21)Не. Я уже нахожусь в модальнойФорме и из нее хочу передать НомерСтроки и Отказ
в главную. Или чтоб их передать назад надо позабодиться зарание, и перед открытием  модальной формы создать эти переменные?
23 Mitriy
 
30.09.10
17:17
(22) млять... что тебе мешает создать структуру с любыми опупенными значениями и запулить ее обратно?
24 Ayvengo
 
30.09.10
17:17
Еще можешь на форме реквизиты завести
Форма = ПолучитьФорму("Трололо");
Форма.НомерСтрок = 1;
Форма.Отказ = Ложь;
Форма.ОткрытьМодально();
--
а вообще погляди че там в форме есть после того как получил
25 Дарт Вейдер
 
30.09.10
17:18
(22) из подчиненной можешь передать что угодно
26 Дарт Вейдер
 
30.09.10
17:18
(25) Закрыть(Новый Структура("НомерСтроки, Отказ", НомерСтроки, Истина))
27 Ayvengo
 
30.09.10
17:20
(26) - а ругаццо не будет что параметров много?
28 Дарт Вейдер
 
30.09.10
17:20
(27)ниии )))
29 Дарт Вейдер
 
30.09.10
17:20
параметр то один
30 Ayvengo
 
30.09.10
17:24
(29) хм, интересненько :) Раньше всегда через Вставить тыркался :)
31 Ayvengo
 
30.09.10
17:25
Религия не позволяла видать так сделать :D
32 Domovoi
 
30.09.10
17:31
Туго как-то идет.
Главная форма - ФормаЭлемента
ту которую открываем модально - ПоисДублей
на форме "ПоисДублей" есть ТП - ТабПохожиеЭлементы

//ФормаЭлемента
Процедура ПередЗакрытием
   //Сформировали ТЗ вероятных дублей
   ОткрываемаяФорма = ЭтотОбъект.ПолучитьФорму("ПоискДублей");
   ОткрываемаяФорма.ТабПохожиеЭлементы = ТЗДубли;
   ОткрываемаяФорма.ОткрытьМодально();
   
   //Тут надо получить Отказ и НомерСтроки. Что тут писать?
КонецПроцедуры

//ПоискДублей
Процедура ПриОткрытии() //возможно лучше будет передоткрытием, потом проверю
   ЭлементыФормы.ТабПохожиеЭлементы.СоздатьКолонки();
КонецПроцедуры

Процедура Отмена(Кнопка)
   //Надо в главную форму передать номерстроки и отказ
   Закрыть();
КонецПроцедуры
33 Mitriy
 
30.09.10
17:31
(30) через Вставить код потом легче читать, если значений много...
34 Mitriy
 
30.09.10
17:32
ушел вешаться...
35 Ayvengo
 
30.09.10
17:45
(33) угу, только я даже с 1 или 2мя значениями так делал :) через вставить
36 Mitriy
 
30.09.10
17:47
(35) ну и что?
все равно такой код смотрится аккуратнее...
хотя, тоже иногда злоупотребляю (26)
но это секрет ))
37 Дарт Вейдер
 
30.09.10
18:04
(32) фуф..
ну давай снова да ладом:

//ФормаЭлемента
вместо    
ОткрываемаяФорма.ОткрытьМодально();
   
пишешь
СтруктураРезультат = НоваяФорма.ОткрытьМодально();

по закрытии формы поиска дублей у тебя в СтруктураРезультат вернется возвращаемое значение из подчиненной формы


//ПоискДублей
вместо

//Надо в главную форму передать номерстроки и отказ
Закрыть();

пишешь
Закрыть(Новый Структура("НомерСтроки, Отказ", НомерСтроки, Отказ))

где НомерСтроки, Отказ - твои переменные
38 Дарт Вейдер
 
30.09.10
18:05
(37) ссори, поправочка
СтруктураРезультат = ОткрываемаяФорма.ОткрытьМодально();

конечно же
Независимо от того, куда вы едете — это в гору и против ветра!