TRANSACTION
Все аргументы данной функции будут вычислены в одной транзакции. Если во время вычисления возникнет любая ошибка, вся транзакция откатится.
Внутри транзакции фрагменты кода можно заключать в Try..Except. В этом случае, если внутри блока Try возникнет исключение, то оно будет обработано блоком Except и транзакция не откатится.
Но если в блоке Try заключён вызов какой-то процедуры, который закончился ошибкой, то транзакция откатится в любом случае, т.е. несмотря на Try..Except (см. пример)
Синтаксис
TRANSACTION (аргументы)
Аргументы
- аргументы
- выражение, записанное по правилам языка ГБ
Тип результата
- Нет
Примеры
В данном примере транзакция не откатится, т.к. ошибка возникает в блоке Try и не связана с работой процедур:
Transaction( Processcommand(11,...), Try( Exception(`BAG`), Except(:Err:=1) ) )
В данном примере, несмотря на блок Try, транзакция откатится, если вызов процедуры закончится ошибкой (т.к. ошибки при работе процедур всегда откатывают транзакцию):
Transaction( Processcommand(11,...), Try( OpenDataSet(...), Except(:Err:=1) ) )