Имя: Пароль:
1C
1С v8
Журнал регистрации - нет инфы об объекте и модуле в описании ошибки
0 НеПридумалаНик
 
26.10.16
15:21
Здравствуйте, вопрос такой.
В журнале ведется запись ошибок, но, кроме информации про пользователя и самой ошибке нет более ничего, что бы указывало на то из какого отчета/документа/обработки сгенерировалась эта ошибка. Можно ли перед тем как ошибка запишется в журнал, перехватить ее и добавить в комментарий информацию о метаобъекте, где случилась неприятность: "Отчет.ТакойТо. Произошла исключительная ситуация..."
Если это невозможно, то что сделать с журналом, чтобы добавить к ошибкам информацию про объект, где она случилась.
Метаданные почему-то не фиксируются в ошибках выполнения.
1 Лефмихалыч
 
26.10.16
15:23
если модуля в ЖР нет, значит ошибка произошла внутри Выполнить(). Ищи все Выполнить(), потом думай
2 НеПридумалаНик
 
26.10.16
15:55
(1) тут всех Выполнить несколько десятков... и внутри Выполнить множество точек, в которых может случиться ошибка... вот и думаю, как это автоматизировать для всех Выполнить
3 Лефмихалыч
 
26.10.16
15:56
(2) задай эти вопросы тому, кто придумал эти Выполнить()
4 Лефмихалыч
 
26.10.16
15:57
все выполнить надо завернуть в попытку, которая в исключении будет ВызватьИсключение ОписаниеОшибки();

тогда хоть место в коде увидишь
5 НеПридумалаНик
 
26.10.16
16:20
(4) вы имеете в виду, что такой текст

Попытка
     Выполнить();
Исключение
     ТекстОшибки = "Отчет.ТакойТо: " + ОписаниеОшибки();
КонецПопытки;

поместит в журнал регистрации мой текст ошибки?
6 Лефмихалыч
 
26.10.16
16:29
(5) нет, я имею в виду буквально то, что написал:

Попытка
   Выполнить();
Исключение
   ВызватьИсключение ОписаниеОшибки();
КонецПопытки
7 НеПридумалаНик
 
26.10.16
16:55
(6) Цитата: Исключения, которые не обработаны во встроенном языке, система обрабатывает самостоятельно... при системной обработке исключений делается запись в журнал регистрации

"при системной", т.е. ВызватьИсключение запись в журнал не совершит. Так я понимаю?
Но мне нужна эта запись, только поправленная. Может тогда так?

Попытка
   Выполнить();
Исключение
   ЗаписьЖурналаРегистрации("Ошибка выполнения", УровеньЖурналаРегистрации.Ошибка, Источник, , "Отчет.ТакойТо:" + ОписаниеОшибки(),""));
   //ну и показать ошибку
   ОписаниеОшибки();
КонецПопытки
8 Лефмихалыч
 
26.10.16
16:57
(7) >"при системной", т.е. ВызватьИсключение запись в журнал не совершит

тебе кто сказал такую чушь? Используй код из (6), а так, как в (7), сотри и больше ни кому не показывай.
9 Мыш
 
26.10.16
17:00
Нужно у пользователя включить режим "Отладка в текущем сеансе разрешена". Тогда ошибки будут писатьса в ЖР.
10 Мыш
 
26.10.16
17:00
*писаться )
11 НеПридумалаНик
 
26.10.16
17:02
(8) а почему? собиралась ЗаписьЖурналаРегистрации использовать в подписке на события, чтобы видеть кто какой док/отчет/обработку открыл...
12 Лефмихалыч
 
26.10.16
17:04
(9) чушь
13 НеПридумалаНик
 
26.10.16
17:04
(9) т.е. при нажатии на "подробно" и "конфигуратор..." пользователи спокойно перейдут в код?
14 Лефмихалыч
 
26.10.16
17:04
(11) ВызватьИсключение само запишет в ЖР все, что надо.
15 Лефмихалыч
 
26.10.16
17:05
(13) запись в ЖР от отладки не зависит, не слушай эти бредни
16 НеПридумалаНик
 
26.10.16
17:09
(14) а по (11) вопросу просветите, пожалуйста?
(8) а тогда не будет ошибка продублирована "при системной обработке" и при ВызватьИсключение. Или Попытка перехватывает инициативу у системы?
17 Мыш
 
26.10.16
17:10
(12) Сам такой.
(13) На конфигуратор прав не будет, но код вызвавший ошибку увидят. За исключением содержащегося в "Выполнить", конечно.
18 Мыш
 
26.10.16
17:11
(15) Зависит. На тонком клиенте.
19 Лефмихалыч
 
26.10.16
17:13
(18) не зависит. Запись в ЖР делается на сервере и от вида клиента вообще ни как нее зависит. Единственное, от чего зависит, будет ли событие записано в ЖР или нет,  - это настройки самого ЖР.
20 Лефмихалыч
 
26.10.16
17:14
(16) в подписке используй на здоровье. В случае (7) это бессмысленно, ибо хватит ВызватьИсключение.
21 Мыш
 
26.10.16
17:15
(19) Ты рассуждаешь от теории, в данном случае. Оно так должно быть. Но практика показывает другое.
22 НеПридумалаНик
 
26.10.16
17:15
(17) ну километровые тексты, которые содержатся в Выполнить() мне не хочется оборачивать Попытками, проще добавить процедуру с Попыткой с вызовом искомого Выполнить()... так что позиционирование на Выполнить() ничего не даст
23 НеПридумалаНик
 
26.10.16
17:18
(20) Спасибо, завтра займусь ?
пс. не ссорьтесь с Мыш))
24 Лефмихалыч
 
26.10.16
17:18
(21) я только что проверил. В тонком клиенте запись в ЖР складывается автоматически вне зависимости от отладки. Даже, если ошибка произошла &НаКлиенте.
25 Лефмихалыч
 
26.10.16
17:19
(22) боже, какой бред...
абсолютно нет ни какой разницы, какой длины код в Выполнить(). Вообще. Совсем.
26 Мыш
 
26.10.16
17:20
(24) Ошибки прав доступа тоже? Это с ними такая закавыка.
27 Лефмихалыч
 
26.10.16
17:22
28 Лефмихалыч
 
26.10.16
17:23
(26) с правами будет абсолютно точно то же самое, т.к. они тоже на сервер рассчитываютс, применяются и проверяются
29 НеПридумалаНик
 
26.10.16
17:25
(25) да там черт ногу сломит, каждая доработка в литры кофе выливается... еще и это туда пихать? и так трудно читаемый код
30 Лефмихалыч
 
26.10.16
17:28
при отсутствии прав в ЖР, как и следовало ожидать, пишется "Отказ в доступе".
31 НеПридумалаНик
 
26.10.16
17:29
(6) кстати, этот код в (6) покажет ошибку пользователю? или дополнительно сообщить нужно? (сейчас уже не могу проверить, только завтра, а выяснить сейчас хочется))))
32 Лефмихалыч
 
26.10.16
17:31
(31) и пользователю покажет, и в ЖР запишет, и выполнение прервет. Как любое другое исключение
33 НеПридумалаНик
 
26.10.16
17:32
(32) прямо камень с души...
34 НеПридумалаНик
 
28.10.16
13:49
(32) Спасибо, все замечательно работает. Ошибку регистрирует с моим текстом, даже более... еще и с значениями ЭлементыФормы, которые привели к ошибке
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс