Описание встроенного языка системы 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 Тогда

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

   Иначе

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

   КонецЕсли;

КонецПроцедуры



Содержание раздела