Имя: Пароль:
1C
1С v8
Как перехватить сообщение об ошибке
,
0 hittih
 
31.05.12
13:57
собственно в этом вопрос, Как перехватить сообщение об ошибке, не используя конструкцию попытка исключение
1 Maxus43
 
31.05.12
13:59
никак...

что значит перехватить?
2 ДенисЧ
 
31.05.12
14:00
А что, попытка - нехаляльна?
3 Buster007
 
31.05.12
14:01
чего только не придумают...
4 shamannk
 
31.05.12
14:08
Нужно в начале строки где происходит ошибка поставить "//" и так до победного.
5 HEKPOH
 
31.05.12
14:13
в отладчике "Остановка по ошибке", а потом ОписаниеОшибки() :)
6 Maxus43
 
31.05.12
14:15
(5) не взлетит...)
ОписаниеОшибки() отладчик не переваривает почему-то
7 HEKPOH
 
31.05.12
14:16
(6) не стал проверять - думал, взлетит(
8 hittih
 
31.05.12
14:18
Хочу выводить сообщение об ошибке не в окно служебных сообщений, а в свое.
Не хочу везде пихать попытка - исключение
Хотел программно при старте ситемы переопределять стандарное окно вывода об ошибке на свое, что все сообщения выводились в него.
9 Maxus43
 
31.05.12
14:20
Попытка Икслючение - сделано для тех ошибок которые в "окно" не выводятся вобще, у них своё окно с кнопками Подробно, Конфигуратор и т.п.
10 Maxus43
 
31.05.12
14:21
а ошибки типа - недостаточно товара на складе - это не ошибка
11 hittih
 
31.05.12
14:25
Я имел ввиду ошибки, которые возникают в коде прикладного решения при его написании и которые по каким-то причинам на этапе отладки не были выявлены, вот они то мне и нужны.
12 Wobland
 
31.05.12
14:26
(11) сильно интересно, на зачем?
13 Алистар
 
31.05.12
14:26
Деление на 0 это ошибка?
14 hittih
 
31.05.12
14:31
Wobland просто скажите можно или нет?
15 acsent
 
31.05.12
14:34
такие ошибки пишутся в журнал регистрации
16 hittih
 
31.05.12
14:37
про журнал я знаю, не подходит
17 acsent
 
31.05.12
14:39
а что нужно то?
18 Maxus43
 
31.05.12
14:40
(14) > (1). Нельзя.
что значит перехватывать то? пусть в коде ошибка, например при записи справочника, но чтоб он таки записался, и ошибку вывел?
19 Maxus43
 
31.05.12
14:41
собсно ни в одной языке программирования нельзя, ибо нет СМЫСЛА. имхо
20 Starhan
 
31.05.12
14:42
"Хочу выводить сообщение об ошибке не в окно служебных сообщений, а в свое."
Для этого и существует Попытка

"Не хочу везде пихать попытка - исключение"
Конфликт целей

"Хотел программно при старте ситемы переопределять стандарное окно вывода об ошибке на свое, что все сообщения выводились в него."
Невозможно.
21 Maxus43
 
31.05.12
14:43
новый стиль разработки. Весь код пихать в попытку - и потом смотреть логи)
22 hittih
 
31.05.12
14:54
Вообщем нельзя, ну чтож нет так нет, спасибо всем кто откикнулся.
23 oleg_km
 
31.05.12
15:31
(19)(21) Именно так и пишется например в C++:

int main()
{
   try {

             ... Код всего приложения ...

   }
   catch(_com_error& e) {
           dump_com_error(e);
   }
   return 0;
}

На Фокспре есть аналогичная конструкция, которая позволяет глобально в приложении переопределить обработчик ошибок. Это 1С скорее исключение из общих правил. Но с другой стороны, это все-таки не совсем среда разработки
24 Maxus43
 
31.05.12
15:34
(23) так в 1с никто не запрещает писать
25 Maxus43
 
31.05.12
15:36
а переназначить можно только служебные сообщения, в файл.
26 Fragster
 
гуру
31.05.12
15:40
мне в таком уже приходилось копаться...
Ко всем событиям всех форм подвешивался свой обработчик, типа

ИмяПроц = ПолучитьИмяПроцедуры(Событие)
Попытка
  Выполнить(ИмяПроц)
Исключение
КонецПоптыки;

И если там в середине этого дела что-то шло не так - то просто процедура прекращала выполняться... особенно прикольно, когда при подборе не проставлялась цена или там НДС не считался внезапно... счастливой отладки, блин...
27 Fragster
 
гуру
31.05.12
15:42
причем "остановка по ошибке" не канала, потому что там например ПолучитьАтрибутОбъекта(Объект, ИмяАтрибута) везде юзался, который в попытке опять же пытался получить Объект[ИмяАтрибута], и на обычный вызов функции где-то 5-10 исключений срабатывало, при старте системы - так вообще штук двадцать...

редкостной "красоты" конфа
28 oleg_km
 
31.05.12
15:45
(24) Ты внимательно на код посмотри: попытка находится в функции main(), а значит глобально для всего приложения будет действовать данная обработка. А в 1С в каком месте (ОДНОМ) мне написать Попытка, чтобы все ошибки обрабатывались МОИМ обработчиком?
29 х86
 
31.05.12
16:19
(28)зачем?
30 Maxus43
 
31.05.12
16:42
(29) как зачем? ТАМ можно, а 1с г*вно :)
31 hittih
 
01.06.12
15:00
Up