Имя: Пароль:
1C
 
В 8.3.15 появился стек ошибок
0 Tonik992
 
13.10.19
20:45
Появился стек ошибок, а как из ИнформацияОбОшибке() его вытащить - не понятно. В свойствах есть информация только о номере строки текущего модуля.
ПодробноеПредставлениеОшибке(ИнформацияОбОшибке()) - покажет полный стек ошибки, что очень странно.

Незадокументированная фича или что я делаю не так? Как выскребсти полный стек ошибок программным способом?
1 Tonik992
 
13.10.19
20:46
Выскребсти так, чтобы он был в структурированном виде, как при вызове метода ИнформацияОбОшибке()
2 H A D G E H O G s
 
13.10.19
21:08
Ну обойди рекусривно
3 Tonik992
 
13.10.19
21:12
(2) Не понял идею.
4 ПросТак
 
13.10.19
21:16
(3)Трангессивным способом.
5 H A D G E H O G s
 
13.10.19
21:17
ИнформацияОбОшибке (ErrorInfo)
Причина (Cause)
Использование:
Только чтение.
Описание:
Тип: ИнформацияОбОшибке, Неопределено.
Содержит информацию о причине для данной ошибки. Если таковой не было, то Неопределено.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер).
Использование в версии:
Доступен, начиная с версии 8.1.
6 H A D G E H O G s
 
13.10.19
21:18
Доступен, начиная с версии 8.1.
7 Tonik992
 
13.10.19
21:19
(5) в свойстве "Причина" - Неопределено.
Неопределено как в самом "низу" стека, так и в самом верху.
8 H A D G E H O G s
 
13.10.19
21:29
(7) Попробуй записать свойство ИнформацияОбОшибке в переменную и потом уже смотреть в отладчике, ну или выведи в Сообщить()
9 Tonik992
 
13.10.19
21:36
(8) Все это проделал. Неопределено в любом случае.

Примерный стек вызова:
МодульДокумента -> ОбщийМодуль1.Операция1() -> ОбщийМодуль2.Операция2() -> ОбщийМодуль3.Операция3()

В процедура ОбщийМодуль3.Операция3() возникает ошибка "Поле объекта не обнаружено".
В модуле объекта, в исключении, ИнформацияОбОшибке() отображает место возникновения ошибки в ОбщийМодуль3.Операция3(). Стека не видно, а в свойстве "Причина" через Сообщить() не выводит ничего.
10 Tonik992
 
13.10.19
21:42
ПодробноеПредставлениеОшибке(ИнформацияОбОшибке()) показывает прекрасную картину:

Поле объекта не обнаружено (ошибка)
{ОбщийМодуль.Расчет2.Модуль(57)}: тест = Запись.ошибка;
{ОбщийМодуль.Расчет.Модуль(49)}: Расчет2.вложение1(Запись);
{Документ.ВводПроизвольныхНачисленийИУдержаний.МодульОбъекта(29)}: Расчет.РассчитатьЗаписи(Ссылка);

Видимо это новшество пока только в таком виде можно использовать.
11 RomanYS
 
13.10.19
21:49
(10) Норм. В совместимости работает?
12 Tonik992
 
13.10.19
21:58
(11) Да, даже с 8.3.10 работает.
13 Tonik992
 
13.10.19
22:00
(11) Это не просто норм. Это даже словами не описать.
2 + 2 = 3.9999999999999999999999999999999...