| 
    
        
     
     | 
    
  | 
Проблемы с отладкой в 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 ничего не изменилось.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |