|
ОписаниеОшибки() | ☑ | ||
|---|---|---|---|---|
|
0
andrey02
11.09.08
✎
09:40
|
Нужно отловить некоторые ошибки типа записи (программной) нового документа с неуникальным номером и вывести сообщение. Но для такого случая ОписаниеОшибки() возвращает пустую строку. Как быть?
|
|||
|
1
MishaSan
11.09.08
✎
09:43
|
Погоди ты пишешь
Попытка Док.Записать(режимзаписиДокумента.Запись); Исключение Сообщить(описаниеОшибки()) КонецПопытки; И эта конструкция ничего не выводит, если номер не уникален? |
|||
|
2
hulio_ekb
11.09.08
✎
09:48
|
Это ты в отладчике что ли смотришь, что возвращает описание ошибки? Можешь не пытаться, просто делай как сказано в (1)
|
|||
|
3
andrey02
11.09.08
✎
09:48
|
Да, именно так
|
|||
|
4
Krom
11.09.08
✎
09:50
|
если ошибка возникает, то (1) ее однозначно выловит!
|
|||
|
5
andrey02
11.09.08
✎
09:53
|
Виноват, попробовал как в (1) - все как надо. Видимо у меня в обработке что то еще навернуто
|
|||
|
6
hulio_ekb
11.09.08
✎
10:03
|
Да ничо не навернуто, просто в отладчике ты не увидишь результата функции "описаниеОшибки()"
|
|||
|
7
andrey02
11.09.08
✎
10:23
|
Щас поэкспериментировал... Вот код:
Функция ПредставлениеОбъекта(Объект) МетаТип = Метаданные.НайтиПоТипу(ТипЗнч(Объект)); Возврат МетаТип.ПолноеИмя()+" № "+Объект.Номер+" от "+Объект.Дата; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) Попытка Док = Документы.РасходнаяНакладная.СоздатьДокумент(); Док.Номер = "БВ-0000001"; Док.Дата = ТекущаяДата(); Док.Записать(РежимЗаписиДокумента.Запись); Исключение //Сообщить(ПредставлениеОбъекта(Док)+": "+ОписаниеОшибки()); // не работает Сообщить(Строка(Док)+": "+ОписаниеОшибки()); // работает КонецПопытки; КонецПроцедуры Только вторая Сообщить() выводит описание ошибки, первая - только документ (если первая раскомментирована, то вторая тоже не выводит описание) |
|||
|
8
andrey02
11.09.08
✎
10:28
|
... и даже если функцию ПредставлениеОбъекта() написать так:
Функция ПредставлениеОбъекта(Объект) Возврат Строка(Объект); КонецФункции то тоже первая Сообщить() тоже не выводит описание. Получается, что ОписаниеОшибки() можно использовать только до вызова какой-нибудь своей функции? |
|||
|
9
Krom
11.09.08
✎
10:33
|
а если вот так?
Ошибка = Строка(ОписаниеОшибки()); Сообщить(ПредставлениеОбъекта(Док)+": "+Ошибка); |
|||
|
10
andrey02
11.09.08
✎
10:40
|
Ну да, так работает. Свою то функцию вызываем после ОписаниеОшибки(). Но вот что это за особенность такая, в справке про нее ничего не сказано...
(зато там сказано, что она возвращает описание ошибки без имени модуля и строки, а на самом деле они возвращаются) |
|||
|
11
Krom
11.09.08
✎
10:45
|
походу, если вызывать ОписаниеОшибки после своей функции, то ОписаниеОшибки относится уже к ней!
|
|||
|
12
Krom
11.09.08
✎
10:45
|
и соответственно возвращает пустое значение
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |