ОтменитьТранзакцию
Завершить транзакцию без записи изменений.
Синтаксис:
ОтменитьТранзакцию()
Англоязычный синоним:
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 Тогда
ЗафиксироватьТранзакцию();
Иначе
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры