Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_pr77_Lang1.doc
Скачиваний:
12
Добавлен:
20.11.2019
Размер:
2.43 Mб
Скачать

НачатьТранзакцию

Открыть обработку транзакции.

Синтаксис:

НачатьТранзакцию()

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

BeginTransaction

Описание:

Процедура НачатьТранзакцию открывает транзакцию для обработки ин­формации.

Пример:

Процедура УдалитьПустые()

Спр = СоздатьОбъект("Справочник.Подразделения");

Спр.ВыбратьЭлементы();

НачатьТранзакцию();

Пока Спр.ПолучитьЭлемент() = 1 Тогда

Если Спр.Количество = 0 Тогда

Спр.Удалить();

КонецЕсли;

КонецПока;

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

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

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

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

Синтаксис:

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

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

CoinmitTransation

Описание:

Процедура ЗафиксироватьТранзакцию завершает успешную транзакцию.

Пример:

Процедура УдалитьПустые()

Спр = СоздатьОбъект("Справочник.Подразделения");

Спр.ВыбратьЭлементы();

НачатьТранзакцию();

Пока Спр.ПолучитьЭлемент() = 1 Тогда

Если Спр.Количество = 0 Тогда

Спр.Удалить();

КонецЕсли;

КонецПока;

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

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

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

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

Синтаксис:

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

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

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

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

Иначе

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

КонецЕсли;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]