|
Проблемы с отладкой в 8.3 | ☑ | ||
---|---|---|---|---|
0
Калиостро
02.07.14
✎
12:32
|
Довожу до ума простенькую обработку. В коде есть ошибка. Ставлю точку останова - не срабатывает.
При выполнении в списке сообщений появляется сообщение об ошибке с номером строки в модуле обработки. Но я не могу по двойному клику перейти в конфигуратор, выскакивает модальное окно http://gyazo.com/d318e46658e2710af46eecfcd8085422 При любом действии 1с Предприятие закрывается. В меню "сервис" "параметры" флажок "Отладка в текущем сеансе разрешена" стоит. Как сделать, чтобы при ошибке программа не закрывалась, а только прерывалось выполнение обработки? |
|||
1
Segate
02.07.14
✎
12:34
|
остановка по оштбке? пробовал?
|
|||
2
Maxus43
02.07.14
✎
12:34
|
попыьтку вставь?
|
|||
3
Franchiser
гуру
02.07.14
✎
12:35
|
Клиент-серверный режим работы, модуль серверный? Если да, нужно запускать службу кластера в режиме Debug
|
|||
4
РенеДекарт
02.07.14
✎
12:36
|
(2) бесполезно
Ошибка не в обработке. Это обработка "вклинилась" в какую-то 1с-транзакцию. (0) включите отладку на сервере, и найдите, где происходит ошибка в конфигурации при работе обработки. |
|||
5
Калиостро
02.07.14
✎
12:36
|
(1) С остановкой по ошибке все равно доходит до модального окна, после которого при любом варианте программа закрывается.
(2) Попытка стоит. В исключении и выходит сообщение в окне сообщений. |
|||
6
Калиостро
02.07.14
✎
12:38
|
(3) БП 3.0 Режим запуска толстый клиент.
|
|||
7
Franchiser
гуру
02.07.14
✎
12:39
|
"При выполнении в списке сообщений появляется сообщение об ошибке с номером строки в модуле обработки" если номер строки есть - запомни его и найди в модуле обработки вручную.
|
|||
8
Franchiser
гуру
02.07.14
✎
12:39
|
(6) запусти сервер в режиме отладки тогда
|
|||
9
РенеДекарт
02.07.14
✎
12:40
|
(7)>запомни его и найди в модуле обработки вручную
бесполезно. Ошибка произошла раньше, а здесь в этой строке - лишь 1с среагиовала сообщением. Хотя, да, однозначно - ошибка произошла ДО ЭТОЙ СТРОКИ обработки ))) |
|||
10
Калиостро
02.07.14
✎
12:41
|
(7) Ошибка возникает в процедуре, обращение к которой идет из многих мест в обработке. Мне надо поймать стек вызовов, а точка останова не срабатывает.
|
|||
11
Franchiser
гуру
02.07.14
✎
12:42
|
через "сообщить" можно понять откуда был последний вызов
|
|||
12
РенеДекарт
02.07.14
✎
12:45
|
(10)>а точка останова не срабатывает
дебаг и отладка (11) это каким образом 1с самостоятельно сообщит стек вызова!? |
|||
13
Александр_
Тверь 02.07.14
✎
12:47
|
(0) еще попробуй в отладчике поставить запуск толстого клиента (управляемого приложения).
"Сервис-Параметры-Запуск 1С Предприятие". и перезапусти из конфигуратора 1С. |
|||
14
Калиостро
02.07.14
✎
12:53
|
(13) Да, точка останова сработала. Место возникновения по стеку сразу нашлось.
Но как сделать, чтобы 1с не закрывалась при ошибке в обработке, как это было раньше в 7.7, 8.2? Или это еще один кактус для мышей? |
|||
15
Александр_
Тверь 02.07.14
✎
12:59
|
(14) не стоит сразу так негативно относиться.
Попытка Исключение КонецПопытки Тогда не закроется. |
|||
16
Калиостро
02.07.14
✎
13:02
|
(15) Так и сделано. Сообщение "В данной транзакции уже происходили ошибки" и модальное окно
http://gyazo.com/d318e46658e2710af46eecfcd8085422 без кнопки "Отмена". |
|||
17
Александр_
Тверь 02.07.14
✎
13:04
|
(16) это значит, что ошибка происходит в транзакции, в которой ранее произошла уже ошибка :)
|
|||
18
Александр_
Тверь 02.07.14
✎
13:07
|
скорее всего у тебя где-то раньше твоего кода произошла ошибка при работе с БД, которая была подавлена попыткой/исключением, а транзакция отменена не была.
Это обычно приводит к такой ошибке. |
|||
19
Калиостро
02.07.14
✎
13:12
|
(17), (18) Я в курсе:) Хрен с ними с ошибками в этой обработке. Это обработка загрузки, ошибки могут быть в выгруженных данных. Это пройдено уже 100500 раз. В данной ситуации проще всего их искать через отладчик.
Вопрос в другом, почему 1с при возникновении ошибки закрывает программу без возможности просто прервать обработку, как в предыдущих версиях? |
|||
20
Arxangel06
02.07.14
✎
13:21
|
(19) Просто это фатальная ошибка. Такие ошибки, именно с таким текстом и такими симптомами, были еще в 8.1. Если это обработка загрузки, то нужно записывать изменяемые объекты в транзакции. Тогда БД сама разрулит эту проблему. Проблема у тебя в данном случае выглядит так:
1. юзер открыл объект и запустил процедуру записи (например, проводит документ реализации) 2. твоя обработка меняет объект, связанный с пользовательским, например карточку контрагента, и записывает его. 3. платформа понимает, что возникло нарушение целостности базы и принимает меры к исправлению - откатывает транзакцию. причем в зависимости от продолжительности транзакций и их взаимного значения возможна отмена как одной из транзакций, так и обеих. |
|||
21
Александр_
Тверь 02.07.14
✎
13:22
|
(19) наверное тут вопрос технологический.
Не забывай, что 1С как платформа становится все сложнее и сложнее. По сути ведь - это ошибка прикладного кода (а не платформы), которую платформа старается локализовать. Но не может гарантировать, что это получится. Можешь попробовать в попытке написать что-нибудь типа ОтменитьТранзакцию(). возможно это сможет помочь. |
|||
22
РенеДекарт
02.07.14
✎
13:24
|
(18)>которая была подавлена попыткой/исключением
неверно. Верно в ( 20) При Попытке все прошло бы гладко. (19)>без возможности просто прервать обработку, как в предыдущих версиях? в отладчике включить "Останавливаться по ошибке". (21)>Не забывай, что 1С как платформа становится все сложнее и сложнее. когда разговаривать начнет? )) |
|||
23
РенеДекарт
02.07.14
✎
13:26
|
+ "в отладчике включить "Останавливаться по ошибке"."
но опять же, платформа остановится не в реальном месте возникновения ошибки, а "где среагиовала", т.е. в обработке. Это к вопросу "все сложнее и сложнее". |
|||
24
РенеДекарт
02.07.14
✎
13:26
|
*среагировала
|
|||
25
Александр_
Тверь 02.07.14
✎
13:26
|
(22) если ошибка происходит при записи и при этом нет подавления попыткой/исключением то ошибка возникнет тут же и будет звучать типа: ошибка записи бла бла бла.
|
|||
26
РенеДекарт
02.07.14
✎
13:29
|
(25)>и при этом нет подавления попыткой/исключением то ошибка возникнет тут же
Вы удивитесь, но в 1С все свое: Попытки нет и не было, ошибка происходит в какой-то транзакции, 1с выполняет все до конца, а потом - по завершению/откату транзакции (уже в другом совершенно месте, но по ходу выполнения кода, т.е. дальше) сообщает об "ошибке". |
|||
27
РенеДекарт
02.07.14
✎
13:29
|
(25)>тут же и будет звучать типа: ошибка записи бла бла бла.
вы честно предполагали за 10 рублей получить СУБД? )) |
|||
28
Александр_
Тверь 02.07.14
✎
13:32
|
(26) все случаи с которыми я сталкивался были именно такими как я описал. Правда в основном это касается 8.1
(27) не понял вопроса и юмора с ним связанного. |
|||
29
Arxangel06
02.07.14
✎
13:52
|
(28) в толстом клиенте 8.2 ничего не изменилось.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |