|
Найти номер строки в модуле. | ☑ | ||
---|---|---|---|---|
0
InSoulRock
17.07.14
✎
12:11
|
Здравствуйте! Заранее извиняюсь, только учусь, прошу строго не судить. Возникла мысль\задался вопросом, формировать себе задачу при срабатывании определенного условия, чтобы отследить исключения при выполнении кода, и не только. Задачу формирую, с этим проблем нет, но как мне получить номер строки и название модуля? Что то типа ОписаниеОшибки(), в которой есть эта информация. Спасибо что дочитали хотя бы)
|
|||
1
Rebelx
17.07.14
✎
12:12
|
ИнформацияОбОшибке()
|
|||
2
Maxus43
17.07.14
✎
12:13
|
дочитал, пожалуйста.
В ОписанииОшибки эта информация есть, но это когда используешь Попыка-Исключение |
|||
3
InSoulRock
17.07.14
✎
12:15
|
(2) Да, а я планирую использовать это не только в попытка - исключение. ИнформацияОбОшибке() я так понимаю тоже будет заполнена если есть ошибка. Но ошибки может и не быть.
|
|||
4
Maxus43
17.07.14
✎
12:19
|
(3) ИнформацияОбОщибке - показывает только при наличии ошибки
|
|||
5
InSoulRock
17.07.14
✎
12:24
|
Перефразирую, на примитивном примере.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Наименование = &Программист"; Запрос.УстановитьПараметр("Программист", "Иванов Иван Иванович"); Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() > 1 Тогда Сообщить("Произошла ошибка!!!"); //нарезаем задачу, в задаче указываем номер вот этой строки, и название модуля. Возврат; КонецЕсли; |
|||
6
InSoulRock
17.07.14
✎
12:25
|
Возможно ли получить как то? Номер строки, модуль.
|
|||
7
Maxus43
17.07.14
✎
12:28
|
(6) нет
|
|||
8
Maxus43
17.07.14
✎
12:28
|
только путём
Попытка А = 1/0; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
9
silent person
17.07.14
✎
12:29
|
(5) не понял а где тут ошибка ? может ВызватьИсключение поможет ?
|
|||
10
Maxus43
17.07.14
✎
12:30
|
(9) деление на 0
|
|||
11
Maxus43
17.07.14
✎
12:31
|
можно и
Попытка ВызватьИсключение "Тратата" Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
12
InSoulRock
17.07.14
✎
12:31
|
Вы на сообщение в коде внимание не обращайте, ошибки быть и не может.
|
|||
13
f_vadim
17.07.14
✎
12:32
|
Я иногда пишу код ошибки, потом поиском можно найти
Скажем так: Сообщить("Произошла ошибка!!! Код 0х0000001"); |
|||
14
InSoulRock
17.07.14
✎
12:32
|
то есть можем только через исключение, хм...
|
|||
15
InSoulRock
17.07.14
✎
12:35
|
Громоздко получится
|
|||
16
Rebelx
17.07.14
✎
12:52
|
(11) не гуд.
Если Результат.Количество() > 1 Тогда ВызватьИсключение("Ошибка логики: результат запроса пустой"); КонецЕсли; это - гуд |
|||
17
Rebelx
17.07.14
✎
12:53
|
+(16) в смысле - "результат запроса не пустой"
|
|||
18
hhhh
17.07.14
✎
12:56
|
(15) ну а так
Сообщить("Произошла ошибка!!!"); Сообщить("МОдуль такой то строка такая-то") |
|||
19
InSoulRock
17.07.14
✎
13:01
|
(18) к этому я и пришел, передавать название модуля и номер строки вручную, явно.
Сообщить("Произошла ошибка!!!"); _НарезатьЗадачу(НазваниеМодуля, 12); //к примеру |
|||
20
InSoulRock
17.07.14
✎
13:02
|
а в процедуре этой, формирую задачу и отправляю себе.
|
|||
21
Maxus43
17.07.14
✎
13:09
|
(16) дак твой гуд - прервёт выполнение программы, если исключение не в Попытке.
А оно надо? я вот вангую что нет |
|||
22
sirsp
17.07.14
✎
13:41
|
(19) А вставишь строки перед этим, до решения "задачи"?
|
|||
23
f_vadim
17.07.14
✎
13:44
|
(22) делов-то, пройтись по всему модулю, да исправить.
А уж кто будет после сопровождать, так вообще подивится мастерству и изысканным решениям разработчика. |
|||
24
sirsp
17.07.14
✎
13:47
|
(23) Дык нафэйхоа тогда номер строки? :)
|
|||
25
mikecool
17.07.14
✎
13:47
|
в отладке указать "останавливаться по ошибке"
|
|||
26
Defender aka LINN
17.07.14
✎
13:49
|
(13) Угу. У Мелкософта, вон, тоже, на каждый чих по коду ошибки. Правда, почему-то, если что и находится - то только "Неизвестная ошибка".
|
|||
27
InSoulRock
17.07.14
✎
13:51
|
(24) ну а вдруг в модуле несколько вставок _НарезатьЗадачу() :).
Вопрос этот встал потому что пользователи мягко говоря забивают на сообщения\предупреждения. |
|||
28
f_vadim
17.07.14
✎
13:51
|
(26) Код ведь не для пользователя, а для разработчика.
|
|||
29
f_vadim
17.07.14
✎
13:52
|
(27) Дрессируй. Пусть к заявкам скрины прикладывают.
|
|||
30
РенеДекарт
17.07.14
✎
13:54
|
(0) 1С - это не Бейсик.
Так что - пользуйтесь тем, что есть. |
|||
31
InSoulRock
17.07.14
✎
13:54
|
(29) заявки они не формируют. Она автоматически прилетает ко мне когда выполняется условие.
|
|||
32
sirsp
17.07.14
✎
13:56
|
(27) Я к тому, что в случае активного изменения кода, ты строку по номеру не идентифицируешь!
|
|||
33
f_vadim
17.07.14
✎
13:57
|
(31) ну отсылай какой-нибудь код, по нему глобальным поиском можно найти.
|
|||
34
InSoulRock
17.07.14
✎
13:57
|
(32) кстати ты прав
|
|||
35
f_vadim
17.07.14
✎
14:01
|
(31) Опять же, если ты прогнозируешь появление ситуации, которая предусматривает вмешательство разработчика, что мешает предусмотреть заранее обработку исключений или вообще не допускать их возникновения?
|
|||
36
InSoulRock
17.07.14
✎
14:04
|
(35) в первом посту я писал что начинающий) я не могу всего предусмотреть в силу не опытности, а пользователи забивают на сообщения часто.
|
|||
37
f_vadim
17.07.14
✎
14:11
|
(36) По-моему, проблема высосаного яйца не стоит.
Получается, что, несмотря на ошибки, пользователь получает какой-то результат. И на корректность забивает. А ты такой ниндзя втихаря всё поправил. Может не давать пользователю ничего? Может просто прекращать выполнение и выдавать сообщение "исключительная ситуация. пригласите разработчика"? |
|||
38
InSoulRock
17.07.14
✎
14:12
|
(34) тот же модуль могут переименовать, а потом не найдешь. задумка тает(
|
|||
39
f_vadim
17.07.14
✎
14:16
|
(38) глобальный поиск по "0х00110011" найдёт тебе даже переименованном модуле.
|
|||
40
InSoulRock
17.07.14
✎
14:20
|
(39) а если у меня не одна такая вставка будет? вести учет? 0х00110011 использовал для такого то, 0х00110101 использовал для такого то.
|
|||
41
f_vadim
17.07.14
✎
14:24
|
(40) тьху блин, голову включай.
Во-первых, сообщение в любом случае должно содержать максимум информации. Подумай о тех пользователях, кто всё-таки будет читать сообщения, и тех, кто будет сопровождать твою поделку после тебя. Коды можно сделать уникальными в пределах модуля и добавить префикс с названием модуля, типа "ОбщегоНазначенияКлиентСервер_001" |
|||
42
InSoulRock
17.07.14
✎
14:29
|
Ладно, спасибо всем за ответы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |