Процедуры работы с транзакциями
ОтменитьТранзакцию
Завершить транзакцию без записи изменений.
Синтаксис:
ОтменитьТранзакцию()
Англоязычный синоним:
RollBackTransaction
Описание:
Процедура ОтменитьТранзакцию завершает транзакцию без записи изменений.
Пример:
В данном примере приведена процедура заполнения справочника валют значениями курсов из внешнего текстового файла. В процедуре используется обработка транзакции, причем, если в процессе загрузки обнаружилось наличие некорректных данных во внешнем файле, то процедура завершается с отменой транзакции.
Процедура ЗагрузкаКурсовВалют() Влт = СоздатьОбъект("Справочник.Валюты"); Текст = СоздатьОбъект("Текст"); Текст.Открыть(ИмяФайла); Если Текст.КоличествоСтрок() = 0 Тогда Сообщить("Текст пустой!"); Возврат; КонецЕсли; Успешно = 1; НачатьТранзакцию(); Для Ном = 1 по Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(Ном); Если СтрДлина(Стр) = 0 Тогда Продолжить; КонецЕсли; Поле=0; Пока СтрДлина(Стр) > 0 Цикл Поле = Поле + 1; Инд = Найти(Стр, "-"); Если Инд > 0 Тогда Если Инд > 3 Тогда Стр1 = Сред(Стр, 2, Инд-3); // не берем кавычки спереди и сзади, и символ тильды. Иначе // если значение поля пропущено Стр1 = ""; КонецЕсли; Стр=Сред(Стр, Инд + 1); // не берем символ тильды Иначе Стр = Сред(Стр, 2); Инд = Найти(Стр, """"); Стр1 = Сред(Стр, 1, Инд-1); Стр = ""; КонецЕсли; Если Поле = 1 Тогда Код = Стр1; ИначеЕсли Поле = 2 Тогда Курс = Стр1; ИначеЕсли Поле = 3 Тогда ДатаКурса = Стр1; КонецЕсли; КонецЦикла; Влт.ИспользоватьДату(Дата(ДатаКурса)); Влт.НайтиПоКоду(Код); Если Влт.Выбран() > 0 Тогда Сообщить(Формат(Ном, "45") + " - загрузка Курса=" + Формат(Курс, "45") + " от " + ДатаКурса); Влт.Текущ_курс = Число(Курс); Влт.Записать(); Сообщить(" – Загружен!"); Иначе Успешно = 0; Сообщить("В базе данных нет валюты с кодом " + Код"); Сообщить("Импорт данных отменён!"); Прервать; КонецЕсли; Состояние("Загружено "+Ном+" строк."); КонецЦикла; Если Успешно = 1 Тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; КонецПроцедуры