| 
    
        
     
     | 
    
  | 
Транзакции. Не отменяет все действия | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Wefast    
     27.05.24 
            ✎
    15:51 
 | 
         
        Пишу:
 
        НачатьТранзакцию(); Попытка Элементы.МойРеквизит.Видимость = истина; а = 1/0; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); КонецПопытки Все равно мой реквизит становится видимым. Разве не все что происходит в транзакции откатывается в случае ошибки внутри нее? Сейчас пишу так: Успех = истина; НачатьТранзакцию(); Попытка а = 1/0; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); Успех = Ложь; КонецПопытки Если Успех Тогда Элементы.МойРеквизит.Видимость = истина; КонецЕсли;  | 
|||
| 
    1
    
        Волшебник    
     27.05.24 
            ✎
    15:37 
 | 
         
        Откатывается только запись в базу. Все остальные действия не являются частью транзакции.     
         | 
|||
| 
    2
    
        Волшебник    
     27.05.24 
            ✎
    15:38 
 | 
         
        И соблюдайте лесенку программного кода (отступы). Тут вам не fast...     
         | 
|||
| 
    3
    
        Timon1405    
     27.05.24 
            ✎
    15:42 
 | 
         
        https://its.1c.ru/db/v8std#content:783:hdoc
 
        RTFM обработка исключений на совести разработчика Процедура ЗаписатьДанныеВИБ() НачатьТранзакцию(); Попытка ... // чтение или запись данных ДокументОбъект.Записать() ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ... // дополнительные действия по обработке исключения КонецПопытки; КонецПроцедуры  | 
|||
| 
    4
    
        Wefast    
     27.05.24 
            ✎
    15:46 
 | 
         
        (2) каким образом тут делаются отступы? tab их не делает, не пробелами же их делать. 
 
        (1) (3) Понял, спасибо. (3) Для меня это выделенное предложение было не так понято. Там я думал как раз место для сообщения об ошибке, записи в журнал может чего то и т.п.  | 
|||
| 
    5
    
        Ненавижу 1С    
     27.05.24 
            ✎
    15:47 
 | 
         
        (3) ради холливара, почему все-таки НачатьТранзакцию до попытки, а не внутри?     
         | 
|||
| 
    6
    
        Волшебник    
     27.05.24 
            ✎
    15:48 
 | 
         
        (4) Используйте тег <PRE> из панели оформления справа     
         | 
|||
| 
    7
    
        Wefast    
     27.05.24 
            ✎
    16:20 
 | 
         
        (5) 1с так советует
 
        https://its.1c.ru/db/v8std/content/783/hdoc  | 
|||
| 
    8
    
        Волшебник    
     27.05.24 
            ✎
    15:52 
 | 
         
        (7) в начале ссылок добавляйте https://
 
        https://its.1c.ru/db/v8std/content/783/hdoc  | 
|||
| 
    9
    
        Timon1405    
     27.05.24 
            ✎
    15:55 
 | 
         
        (5) можно не надо?) для холиваров есть старая статья на хабре https://habr.com/ru/articles/419715/     
         | 
|||
| 
    10
    
        Волшебник    
     27.05.24 
            ✎
    15:57 
 | 
         
        (5) Потому что внутри блока Исключение есть ОтменитьТранзакцию.
 
        Кстати, надо бы её оформить в блок Если ТранзакцияАктивна() Тогда  | 
|||
| 
    11
    
        Ненавижу 1С    
     27.05.24 
            ✎
    16:03 
 | 
         
        (10) к сожалению, я не понял доводов     
         | 
|||
| 
    12
    
        Ненавижу 1С    
     27.05.24 
            ✎
    16:05 
 | 
         
        (10) + (11) нашел https://habr.com/ru/articles/419715/#comment_20146648
 
        спасибо  | 
|||
| 
    13
    
        Волшебник    
     27.05.24 
            ✎
    16:15 
 | 
         
        (12) это какой язык? Похож на 1С, но не он     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |