Иллюстрированный самоучитель по языку системы 1С:Предприятие

Процедуры работы с транзакциями

ОтменитьТранзакцию

Завершить транзакцию без записи изменений.

Синтаксис:

ОтменитьТранзакцию()

Англоязычный синоним:

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 Тогда

ЗафиксироватьТранзакцию();

Иначе

ОтменитьТранзакцию();

КонецЕсли;

КонецПроцедуры
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.