Имя: Пароль:
1C
 
Передача данных между управляемыми формами
,
0 Wefast
 
17.08.15
11:38
В форме1 пишу:
ПараметрыФормы = ОткрытьФормуМодально("Документ.КА_ГрафикПлатежей.Форма.ПараметрыДляЗаполнения");

Во второй форме заполняю реквизиты и жму ОК
&НаКлиенте
Процедура ОК(Команда)
    Структура = Новый Структура;
    Структура.Вставить("СуммаОдногоПлатежаТело",СуммаОдногоПлатежаТело);
    Структура.Вставить("СуммаОдногоПлатежаПроцент",СуммаОдногоПлатежаПроцент);
    ЭтаФорма.Закрыть(Структура);
КонецПроцедуры


В общем так все работает. Вопрос в том как сделать так чтобы при простом закрытии формы ничего не происходило

Есть сделать событие ПриЗакрытие на клиенте. Но что там написать, ведь оно срабатывает и при нажатии на кнопку ОК. Нагородить конечно можно всякого, но уверен есть стандартное решение
1 Cube
 
17.08.15
11:44
Для начала, забудь про модальность: Перевод на управляемые формы
2 Господин ПЖ
 
17.08.15
11:46
в данном случае модальность ничего не меняет
3 SeraFim
 
17.08.15
11:52
При простом закрытии форма закрывается с Неопределено.
то есть при простом закрытии будет вызвано ЭтаФорма.Закрыть(Неопределено)
4 Enterprise
 
17.08.15
12:06
(0)
Процедура ОткрытьВторуюФорму()
    Описание = Новый ОписаниеОповещения("ЗакрытиеВторойФормы", ЭтаФорма);
    ОткрытьФорму("Документ.КА_ГрафикПлатежей.Форма.ПараметрыДляЗаполнения",,,,,,Описание);
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытиеВторойФормы(Результат, Параметры) Экспорт
    Если Результат = Неопределено Тогда
      //значит просто закрыли
    Иначе
      //нажали ОК
    КонецЕсли;  
КонецПроцедуры

Во второй форме оставить всё как есть.

P.S. Не проверял
5 Wefast
 
17.08.15
12:09
Да уже дошел до этого сам посмотрев через отладку что там к чему. Спасибо.

А вот ссылка на срач про модальные окна не помогла. Единственная причина сделать не через модальное окно это то что 1С пишет что откажется в итоге от них
6 Wefast
 
17.08.15
12:11
(4) эти процедуры какие то события? или к чему они привязаны. У меня там сейчас одна процедура а понадобится 3 и зачем?
7 Господин ПЖ
 
17.08.15
12:12
(6) отказ от модальных окон... надо указать событие которое сработает при закрытии формы, т.к. выполнение кода "не останавливается"
8 Enterprise
 
17.08.15
12:14
(6) Почему 3? Просто добавится еще одна процедура
9 Cube
 
17.08.15
12:15
(5) То есть, делать правильно, это не для тебя? Тебе, тогда, на клюшках надо программировать.

Вон, в (4) уже весь код написан без использования модальности. Но ты его не осилил, потому что не в теме...
10 Wefast
 
17.08.15
13:50
Я все еще не пойму куда что написать.
Вставил обе эти процедуры в моуль первой формы

Вызвал первую процедуру из процедуры кноки по которой у меня она должна вызываться.

И вот что пишет:
Ошибка инициализации модуля: Документ.КА_ГрафикПлатежей.Форма.ФормаДокумента.Форма
по причине:
{Документ.КА_ГрафикПлатежей.Форма.ФормаДокумента.Форма(73,22)}: Тип не определен (ОписаниеОповещения)
    Описание = Новый <<?>>ОписаниеОповещения("ЗакрытиеВторойФормы", ЭтаФорма);

Я не пойму сам механизм данного кода. Если как я писал. То я переменной присвоил результат, что возвращала вторая форма при закрытие. И все, с этим я и работал.

Тут же что то не очевидное для меня. В какой момент мне вызывать ЗакрытиеВторойФормы?
Так же после первой к примеру?

(9) ну я тут и написал потому что хочу правильно сделать.
11 Wefast
 
17.08.15
14:11
В общем заработало и я таки разобрался в этом коде.
12 Enterprise
 
17.08.15
15:57
(11) Красавчик