Имя: Пароль:
1C
1С v8
v8: Программное закрытие окон сообщений об ошибках
,
0 Spakus
 
09.07.12
09:41
Ситуация следующая.
Запускается регламент, который имитирует запуск всех доступных форм для пользователя(для контроля ошибок). В процессе работы регламента вылетают  ошибки кода. Как "поймать" данные ошибки(программные) и продолжить выполнение регламента?

Спасибо за помощь.
1 ThreeTONE
 
09.07.12
09:42
попытка
исключение
конецпопытки
2 andrewks
 
09.07.12
09:42
исключения не предлагать?
3 Spakus
 
09.07.12
09:43
Дело в том, что формы как раз и открываются в попытке и в исключение не попадают :(
4 Spakus
 
09.07.12
09:46
Подключил обработчик ожидания в форме(пока тестирую интерактивно), но на программных ошибках он не срабатывает :(
5 Serg_1960
 
09.07.12
09:57
Озвучь, для примера, тексты "программных" :) ошибок.
6 ChAlex
 
09.07.12
10:00
(3) - Ну так что бы попадали необходимо либо Отказ=Истина либо ВызыватьИсключение() в модулях в зависимости от логики
7 Reset
 
09.07.12
10:03
Как-то и задача, и способ решения настораживают
8 Spakus
 
09.07.12
10:04
Например, вот эта

{ОбщаяФорма.ФормаВопросаТриСостоянияУпр.Форма(35)}: Итератор для значения не определен
       Для каждого ЭлементСписка Из ТекстВопроса Цикл

Интерактивно данную ошибку можно закрыть, и регламент продолжит работать.
9 Spakus
 
09.07.12
10:07
Цель данной задачи в том, чтобы отслеживать не возникают ли программные ошибки(ошибки программиста) под разными пользователями. Если такие ошибки есть, то их необходимо обработать до внедрения с тестовой базы на рабочую.
Т.е. это инструмент для программиста для исключения возникновения ошибок кода у реальных пользователей.
10 Jolly Roger
 
09.07.12
10:09
(0) для тестирования гуя есть специальный софт: testcomplete и тп...
11 ChAlex
 
09.07.12
10:10
(9) - оба на, ну это изврат - 1С своей глючностью что ли провоцирует на создание неработающих программ? - я фигею
12 Reset
 
09.07.12
10:12
(9) Это архихерня, а не инструмент
13 ChAlex
 
09.07.12
10:13
(9) - чистите свой код и не мутите разум
14 Reset
 
09.07.12
10:14
Попытаюсь мягче сказать: Если программа запустилась и не выдала ошибок, это не значит, что их нет.
15 Aleksey
 
09.07.12
10:15
Ну так наберут студентов по объявлению, а потом вот такие регламенты рождаются
16 Spakus
 
09.07.12
10:15
Для этого собственно обработка и нужна.
Для поиска таких мест.
17 pumbaEO
 
09.07.12
10:18
Хочешь unit тестирование? - Нету его. Вроде обещали, что-то в 8.2.16(8.3) сделать, но нет.


(15) Есть в форме, в модуле набор условий, одно из них срабатывает 1 раз на 100 случаев, в случаи изменения логики программы/обновления как проверить эти случаи?
18 Serg_1960
 
09.07.12
10:22
фи :( Некоторые скатились на личности вместо решения проблемы. А проблема, имхо, есть. Тут даже не важен "контекст" применения - не об этом ведь речь.
19 Spakus
 
09.07.12
10:24
Так как перехватить ошибку кода?
20 Reset
 
09.07.12
10:30
(19) Тебе в (1) ответили
21 Spakus
 
09.07.12
10:32
Уже отвечал
Дело в том, что формы как раз и открываются в попытке и в исключение не попадают :(
22 Ork
 
09.07.12
10:34
(21) Вам кто-то запретил использовать вложенность Попытка-Исключение?
23 Reset
 
09.07.12
10:34
(21) Надо ли понимать эту фразу, как то, что обработчик (к примеру) ПриОткрытии() заключен в попытку/исключение?
24 ChAlex
 
09.07.12
10:36
(19) - человек в (17) - ответил - на сегодня никак. Можно перехватить ошибку выполнения кода, но не ошибку компиляции. А сообщение (8) - это ошибка компиляции.
25 Reset
 
09.07.12
10:37
(24) Это ошибка времени выполнения.
26 Spakus
 
09.07.12
10:37
Вот текст процедуры имитирующий открытие форм

&НаКлиенте
Процедура ОткрытьОбщиеФормы(МассивОбъектов)
   
   Для Каждого Объект Из МассивОбъектов Цикл
       ОбработкаПрерыванияПользователя();
       ИмяФормыОбъекта = "ОбщаяФорма." + Объект.ИмяФормы;    // имя формы
       
       ВремяНачалаОперации = ТекущаяДата();
       //Получение формы
       Попытка
           ФормаПолученная = ПолучитьФорму(ИмяФормыОбъекта);
           //Предупреждение("Получение общей формы " + Объект.ИмяФормы, 1);            // задержка
       Исключение
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = "Не удалось получить общую форму " + Объект.ИмяФормы;
           Сообщение.Сообщить();
           ЕстьОшибки = Истина;
           ОпОшибки =
           ОсновнойТекстПисьма = ОсновнойТекстПисьма + Символы.ПС + ОписаниеОшибки() + " Получение формы" + Символы.ПС;
       КонецПопытки;
       
       // Открытие формы
       Попытка
           ФормаОткрытая = ОткрытьФорму(ИмяФормыОбъекта);
           //Предупреждение("Открытие общей формы " + Объект.ИмяФормы, 1);            // задержка
           
           // закрытие формы
           ФормаОткрытая.Закрыть();
       Исключение
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = "Не удалось открыть общую форму " + Объект.ИмяФормы;
           Сообщение.Сообщить();
           ЕстьОшибки = Истина;
           ОсновнойТекстПисьма = ОсновнойТекстПисьма + Символы.ПС + ОписаниеОшибки() + " Открытие формы" + Символы.ПС;
       КонецПопытки;
   КонецЦикла;
   
КонецПроцедуры
27 Reset
 
09.07.12
10:45
(26) И тебе, к примеру, ни разу не пришло в голову, что тестирование форм, открывая их (sic!) - может быть некорректно, так как для форм часто требуется какой-то контекст, параметры? Ошибка из (8) явно возникает из-за того, что форма ждет параметра в ТекстВопроса. У тебя этот параметр Неопределено.
(12),(14) еще раз.
28 orefkov
 
09.07.12
10:51
Параметр командной строки /out
29 Spakus
 
09.07.12
10:52
У меня сейчас стоит вопрос не в том чтобы убрать ошибки кода, а в том как заставить программно закрывать окна с данными ошибками. Эти ошибки попадают в журнал регистрации, из которого они попадают в отчет "Контроль журнала регистрации". С этим отчетом и работают далее программисты для обработки ошибок.

Так что такие ошибки нельзя обработать?
А если подключить обработчик ожидания в модуле управляемого приложения, то запустится ли он при возникновении ошибки кода?
30 Serg_1960
 
09.07.12
10:57
Нет возможности как-либо программно обработать ошибки такого рода. Попытка "вылавливает" ошибки другого рода - "ошибки времени выполнения"(с) :(
31 Spakus
 
09.07.12
10:58
Всем спасибо за помощь
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший