|   |   | 
| 
 | v7: Чего нельзя делать внутри транзакции? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ado 12.08.11✎ 12:55 | 
        Господа, напомните сабж, плиз.
  Валится опработка с ошибкой "Ошибка при выполнении процедуры ЗафиксироватьТранзакцию", никак не могу найти, в чем косяк. | |||
| 1
    
        Kreont 12.08.11✎ 12:56 | 
        (0) Снять НачалоТранзакции и ошибка покажется там где реально что-то не так     | |||
| 2
    
        Попытка1С 12.08.11✎ 12:57 | 
        Попытку?     | |||
| 3
    
        Попытка1С 12.08.11✎ 12:58 | 
        Хотя не..     | |||
| 4
    
        Sserj 12.08.11✎ 12:58 | 
        Так надо искать что не так сделалось, типа проводился документ и не провелся.     | |||
| 5
    
        Sserj 12.08.11✎ 13:00 | 
        Тобишь обычно лучше делать так:
  ТранзакцияУспешна = 1; НачатьТранзакцию(); ... Попытка ЧтонибутьПровести ИлиЧтонибутьЗаписать Исключение ТранзакцияУспешна = 0; КонецПопытки Если ТранзакцияУспешна = 1 Тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; | |||
| 6
    
        ildary 12.08.11✎ 13:09 | 
        (5) еще лучше после строки Исключение вставить 
  Предупреждение( "Ошибка при записи/проведении:" + ОписаниеОшибки(), 120 ); | |||
| 7
    
        ЧеловекДуши 12.08.11✎ 13:09 | 
        Лучше так 
  ТранзакцияУспешна = 1; Попытка НачатьТранзакцию(); Исключение // Обломись, не могу заблокировать таблицы БД Возврат КонецПопытки ... Попытка ЧтонибутьПровести ИлиЧтонибутьЗаписать Исключение ТранзакцияУспешна = 0; КонецПопытки Если ТранзакцияУспешна = 1 Тогда ЗафиксироватьТранзакцию(); Иначе Попытка ОтменитьТранзакцию(); Исключение //Что - то не так :) КонецПопытки КонецЕсли; | |||
| 8
    
        Кириллка 12.08.11✎ 13:09 | 
        (0)можно делать все, но некоторые действия будут влиять на успешность завершения транзакции.     | |||
| 9
    
        ado 12.08.11✎ 13:47 | 
        (5) Хмммм ...     | |||
| 10
    
        Кириллка 12.08.11✎ 13:51 | 
        (5)после
  ЧтонибутьПровести ИлиЧтонибутьЗаписать уже транзакция откатилась и нет смысла ее отменять. | |||
| 11
    
        andrewks 12.08.11✎ 15:35 | 
        (0) СтатусВозврата(0);     | |||
| 12
    
        Torquader 12.08.11✎ 23:19 | 
        У меня такое было, когда BeginTransaction() написал один раз, а CommitTransaction() - два раза.
  И долго-долго чесал репу, пока не посчитал. | |||
| 13
    
        Aleksey 12.08.11✎ 23:53 | 
        На ноль делить нельзя внутри транзакции     | |||
| 14
    
        Torquader 13.08.11✎ 00:03 | 
        (13) Ошибки времени исполнения от транзакции не зависят и выводятся сразу, а транзакция при этом автоматически откатывается - причём в сообщении об ошибке о транзакции ни слова не будет.     | |||
| 15
    
        ado 15.08.11✎ 09:00 | 
        (12) Та не, посчитал, всё верно, вроде ...     | |||
| 16
    
        ado 15.08.11✎ 18:20 | 
        Аааа, вот она, скотина. Во глубине процедур, вызываемых внутри транзакции был такой код:
  
 И вот когда срабатывало исключение ... Щас найду коллегу, который это написал, и скажу ему разные нехорошие слова. | |||
| 17
    
        andrewks 15.08.11✎ 18:21 | 
        (16) зачётно )     | |||
| 18
    
        andrewks 15.08.11✎ 18:21 | 
        +(17) напомнило: 
  "по колёсам стучал? ну, тогда не знаю..." | |||
| 19
    
        ado 15.08.11✎ 18:25 | 
        В который раз убеждаюсь, что исключения -- зло.     | |||
| 20
    
        andrewks 15.08.11✎ 18:27 | 
        (19) та не, просто надо уметь их готовить.
  тут дело-то не в исключении, а в гКоде | |||
| 21
    
        ado 15.08.11✎ 18:34 | 
        (20) Точнее зло -- затыкать исключениями то, что можно обычной проверкой проверить.
  Впрочем, такая проверка, как в (16) говорит о несколько бОльших проблемах в консерватории, но это уже другая тема. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |