TRANSACTION — различия между версиями
Alexey (обсуждение | вклад) (Новая страница: «{{Функция ГБ |Название=TRANSACTION |Описание=Все аргументы данной функции будут вычислены в одно…») |
Alexey (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{Функция ГБ | {{Функция ГБ | ||
|Название=TRANSACTION | |Название=TRANSACTION | ||
− | |Описание=Все аргументы данной функции будут вычислены в одной транзакции. Если во время вычисления возникнет любая ошибка, вся транзакция откатится. | + | |Описание=Все аргументы данной функции будут вычислены в одной транзакции. Если во время вычисления возникнет любая ошибка, вся транзакция откатится.<br/><br/>Внутри транзакции фрагменты кода можно заключать в Try..Except. В этом случае, если внутри блока Try возникнет исключение, то оно будет обработано блоком Except и транзакция не откатится.<br/>Но если в блоке Try заключён вызов какой-то процедуры, который закончился ошибкой, то транзакция откатится в любом случае, т.е. несмотря на Try..Except (см. пример). |
|Аргументы= | |Аргументы= | ||
{{Аргумент | {{Аргумент | ||
|Название=аргументы | |Название=аргументы | ||
− | |Пояснение= | + | |Пояснение=выражение, записанное по правилам [[:Category:Язык_ГБ|языка ГБ]] |
}} | }} | ||
|Синтаксис=TRANSACTION ('''аргументы''') | |Синтаксис=TRANSACTION ('''аргументы''') | ||
+ | |Пример= | ||
+ | В данном примере '''транзакция не откатится''', т.к. ошибка возникает в блоке Try и не связана с работой процедур: | ||
+ | Transaction( | ||
+ | Processcommand(11,...), | ||
+ | Try( | ||
+ | Exception(`BAG`), | ||
+ | Except(:Err:=1) | ||
+ | ) | ||
+ | )<br/> | ||
+ | В данном примере, несмотря на блок Try, '''транзакция откатится''', если вызов процедуры закончится ошибкой (т.к. ошибки при работе процедур всегда откатывают транзакцию): | ||
+ | Transaction( | ||
+ | Processcommand(11,...), | ||
+ | Try( | ||
+ | OpenDataSet(`ARTICULS_GET`, ...), | ||
+ | Except(:Err:=1) | ||
+ | ) | ||
+ | ) | ||
}} | }} | ||
[[Category:Функции_ГБ]] | [[Category:Функции_ГБ]] |
Текущая версия на 11:08, 9 июня 2020
Все аргументы данной функции будут вычислены в одной транзакции. Если во время вычисления возникнет любая ошибка, вся транзакция откатится.
Внутри транзакции фрагменты кода можно заключать в Try..Except. В этом случае, если внутри блока Try возникнет исключение, то оно будет обработано блоком Except и транзакция не откатится.
Но если в блоке Try заключён вызов какой-то процедуры, который закончился ошибкой, то транзакция откатится в любом случае, т.е. несмотря на Try..Except (см. пример).
Синтаксис
TRANSACTION (аргументы)
Аргументы
- аргументы
- выражение, записанное по правилам языка ГБ
Тип результата
- Нет
Примеры
В данном примере транзакция не откатится, т.к. ошибка возникает в блоке Try и не связана с работой процедур:
Transaction( Processcommand(11,...), Try( Exception(`BAG`), Except(:Err:=1) ) )
В данном примере, несмотря на блок Try, транзакция откатится, если вызов процедуры закончится ошибкой (т.к. ошибки при работе процедур всегда откатывают транзакцию):
Transaction( Processcommand(11,...), Try( OpenDataSet(`ARTICULS_GET`, ...), Except(:Err:=1) ) )