Имя: Пароль:
1C
1С v8
УФ. Как получить реквизиты второй формы через оповещение?
0 Stim
 
05.11.14
11:07
Есть внешняя обработка с двумя формами. Хочу из основной формы открыть вторую, при закрытии передать из неё значение реквизиты  в первую

Вот код:


//Основная форма
&НаКлиенте
Процедура НажатиеКнопкиОткрытьДругуюФорму(Элемент)
МояФорма = получитьФорму("ВнешняяОбработка.МояВнешняяОбработка.Форма.мояВтораяФорма",,ЭтаФорма);    
форма.открыть();
КонецПроцедуры


//Основная форма
&НаКлиенте
Процедура ВыполнитьПослеОткрытияВторойФормы(Результат, ДополнительныеПараметры) Экспорт
//отладчег сюда не доходит
Сообщить(ТипЗнч(результат));
КонецПроцедуры



//Вторая форма
&НаКлиенте
Процедура ПриЗакрытии()
//отладчик сюда попадает
Оп = Новый ОписаниеОповещения("ВыполнитьПослеОткрытияВторойФормы",ЭтотОбъект.ВладелецФормы,МойРеквизит );
КонецПроцедуры


Почему отладчик не попадает в процедуру  ВыполнитьПослеОткрытияВторойФормы ? ЧЯДНТ?
1 Cube
 
05.11.14
11:13
(0) А у тебя ЭтотОбъект.ВладелецФормы не пустой случайно?
2 Stim
 
05.11.14
11:17
(1) а с чего это он пустой?
Там форма-владелец.
3 Cube
 
05.11.14
12:03
(2) А ты уверен? Проверял?
А то мне кажется, что там надо писать ЭтаФорма.ВладелецФормы, а не ЭтотОбъект.ВладелецФормы...
4 Stim
 
05.11.14
12:20
(3) ок, проверил так. Все равно не попадает.
при этом если удалить экспортную процедуру, то ругается
5 Cube
 
05.11.14
12:33
(4) Блин)) А чего это ты ждешь у моря погоды-то?)) Создал объект "Оп" и ничего с ним не сделал... Это же не ОбработчикОжидания() тебе :))

Делай так:


//Основная форма

&НаКлиенте
Процедура НажатиеКнопкиОткрытьДругуюФорму(Элемент)
    
    ОткрытьФорму("ВнешняяОбработка.МояВнешняяОбработка.Форма.мояВтораяФорма", , , , , , Новый ОписаниеОповещения("ВыполнитьПослеОткрытияВторойФормы", ЭтотОбъект));    
    
КонецПроцедуры


//Основная форма

&НаКлиенте
Процедура ВыполнитьПослеОткрытияВторойФормы(Результат, ДополнительныеПараметры) Экспорт

    //отладчег сюда не доходит
    
    Сообщить(ТипЗнч(результат));
    
КонецПроцедуры


//Вторая форма

&НаКлиенте
Процедура ЗакрытьФормуНах()

    //Эту процедуру прикрути к кнопке на форме
    Закрыть(МойРеквизит);
    
КонецПроцедуры
6 Stim
 
05.11.14
12:46
(5) все равно не вызывается
7 Cube
 
05.11.14
12:49
(6) Ну чё ты заливаешь? У меня вот так работает, а у тебя не работает:

&НаКлиенте
Процедура Настройки(Команда)
    
    ОткрытьФорму("ОбщаяФорма.ФормаКонстант", , , , , , Новый ОписаниеОповещения("НастройкиЗавершение", ЭтотОбъект));
    
КонецПроцедуры //Настройки()

&НаКлиенте
Процедура НастройкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    ПрочитатьДанныеКонстант();

КонецПроцедуры //НастройкиЗавершение()
8 Stim
 
05.11.14
13:08
Да что я вру чтоле
вот обработка:http://files.webfile.ru/0f7afadb70b8f93595ef5fc414631d0d
9 Cube
 
05.11.14
13:27
(8) Не врешь, но ошибаешься. Даже скопипастить нормально не можешь)))

Вместо

ОткрытьФорму("ВнешняяОбработка.тестмодальногорежима.Форма.Форма1",,,,,Новый ОписаниеОповещения("ВыполнитьПослеОткрытияВторойФормы",ЭтотОбъект));

пиши

ОткрытьФорму("ВнешняяОбработка.тестмодальногорежима.Форма.Форма1",,,,,,Новый ОписаниеОповещения("ВыполнитьПослеОткрытияВторойФормы",ЭтотОбъект));

Разницу уловил?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший