Имя: Пароль:
1C
 
Попытка ... исключение
0 5 Элемент
 
01.12.09
10:33
Можете просветить почему ошибка возникающая при открытии формы, которая открывается в "попытке", не приводит к выполнению "исключения" ?
1 Stepa86
 
01.12.09
10:33
код в студию
2 Defender aka LINN
 
01.12.09
10:34
(0) Вложенная попытка? Или, может, это и не исключение вовсе?
3 5 Элемент
 
01.12.09
10:36
(1) в форме такой код
Процедура ПриОткрытии()
   
ЭтоОШибка = 100;
ЭтоОШибка.Ошибка();
   
КонецПроцедуры

пытаюсь открыть форму так

ФормаОбъекта = Ссылка.ПолучитьФорму();
Попытка

ФормаОбъекта.Открыть();

Исключение

КонецПопытки;
4 Defender aka LINN
 
01.12.09
10:39
(3) Потому что ошибка уже в открытой форме возникает, видимо.
5 Нуф-Нуф
 
01.12.09
10:39
(4) тоже так думаю
6 Нуф-Нуф
 
01.12.09
10:40
ФормаОбъекта = Ссылка.ПолучитьФорму();
Попытка
ФормаОбъекта = 100;
ФормаОбъекта.Открыть();

Исключение

КонецПопытки;

вот тут думаю исключение сработает
7 5 Элемент
 
01.12.09
10:43
(4) получается что не все можно отловить?
8 lxs
 
01.12.09
10:44
(7) есть процедуры ПередОткрытием(), ПриОткрытии(). Туда Попытку вставляй и отлавливай. Ошибка вываливается-то на уровне кода.
9 Ненавижу 1С
 
гуру
01.12.09
10:46
хотя, имхо, неправильно поведение системы
10 hhhh
 
01.12.09
10:47
(7) Процедура ПриОткрытии() привязана к обработчику формы ПриОткрытии ??
11 5 Элемент
 
01.12.09
10:49
(10) конечно привязана, я что совсем нуб :)
(8) если код из ПриОткрытии перенести в ОбработкаПроведения и вызвать проведение, то ошибка ловится.
12 Ненавижу 1С
 
гуру
01.12.09
10:51
(11) наверное они все на уровень GUI завязали
13 5 Элемент
 
01.12.09
10:55
(12) "Дешево и сердито"
14 XLife
 
01.12.09
10:56
(13) доступно и всерьез!
15 hhhh
 
01.12.09
11:04
(13) там получается, что параллельно выполняется. Пока форма открывается, вызывающая программа выполняется дальше, успевает пройти несколько команд и выходит за пределы твоей попытки. То есть открытие формы не останавливает выполнение основной программы. Чтобы остановить, существует отделная команда ОткрытьМодально()
16 Ненавижу 1С
 
гуру
01.12.09
11:05
(15) не пори чушь, после открытия вызывается обработчик ПриОткрытии, потом уж может и дальше идти
17 hhhh
 
01.12.09
11:08
(16) ты наверно хотел сказать ПередОткрытием() ? ПриОткрытии() - не факт.
18 Ненавижу 1С
 
гуру
01.12.09
11:10
(17) да с чего бы, может проверишь?
19 xReason
 
01.12.09
11:10
Вообще должно отлавливать все, что внутри стека вызова получается, относительно блока тру-катч (попытка)
20 hhhh
 
01.12.09
11:11
(18) вообше-то, когда пишем

Форма.Открыть()
Форма.Отбор.Поле.Установить(Значение);

в открытой форме отбор уже установлен.
21 Ненавижу 1С
 
гуру
01.12.09
11:12
(20) между двумя этими операторами будет выполняться ПередОткрытием и ПриОткрытии
22 Ненавижу 1С
 
гуру
01.12.09
11:12
(19) то в нормальных системах
23 5 Элемент
 
01.12.09
11:12
(20) отладчиком проверил - пока не выполнится ПриОткрытии код дальше не выполняется
24 hhhh
 
01.12.09
11:16
(23) ИМХО дело не в этом. Просто открытие формы как бы эмулирует параллельный процесс, а попытка- исключение у тебя задана для вызывающего процесса.
25 Ненавижу 1С
 
гуру
01.12.09
11:18
(24) "как бы эмулирует", не фантазируй
26 5 Элемент
 
01.12.09
11:18
(24) какой еще параллельный процесс? При создании класса вызываются его методы - последовательное выполнение.
27 Ненавижу 1С
 
гуру
01.12.09
11:19
(0) короче, смирись, считай открыл багофичу платформы