Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_ПрикладноеПрограммирование8.doc
Скачиваний:
42
Добавлен:
22.09.2019
Размер:
51.67 Mб
Скачать

1.4.3.16 Оператор управления циклом

Оператор «Продолжить» обеспечивает прерывание выполнения текущей реализации тела цикла и передачу управления в начало цикла для выполнения следующей реализации. Синтаксис этого оператора:

Продолжить;

Оператор «Продолжить» немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Оператор «Продолжить» может использоваться только внутри конструкций операторов цикла.

Пример:

Н = 0;

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.ПометкаУдаления Тогда

Продолжить; //возьмем следующий элемент

КонецЕсли;

Сообщить("Товар: " + Выборка.Наименование);

КонецЦикла;

1.4.3.17 Оператор прерывания цикла

Оператор «Прервать» обеспечивает прерывание выполнение тела цикла и переход на первый оператор, находящийся в модуле после ключевого слова «КонецЦикла». Синтаксис этого оператора:

Прервать;

Оператор «Прервать» приводит к немедленному прекращению выполнения цикла и передает управление первому оператору, следующему за конструкцией оператора «Пока» или «Для». Оператор «Прервать» может использоваться только внутри конструкций операторов цикла.

Пример:

Н = 0;

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Н = Н + 1;

Если Н > 10 Тогда

Прервать; //досрочный выход из цикла

КонецЕсли;

Сообщить("Товар: " + Выборка.Наименование);

КонецЦикла;

1.4.3.17 Оператор перехода

Оператор «Перейти» позволяет выполнить безусловный переход на требуемый исполняемый оператор, расположенный в пределах того же модуля, при этом нельзя выполнить переход на оператор объявления переменной, на оператор описания процедуры или функции, а также внутрь тела процедуры или функции, либо оператора цикла. Синтаксис этого оператора:

Перейти <Метка>;

Таблица 1.11 Описание параметров оператора «Перейти»

<Метка>

Метка другого исполняемого оператора в программе.

Оператор «Перейти» передает управление от одного оператора к другому. Область действия оператора «Перейти» ограничивается программным модулем, процедурой или функцией. Этот оператор не может передать управление за пределы программного модуля, процедуры или функции.

Оператор безусловного перехода не может быть использован для передачи управления на операторы, находящиеся внутри конструкций: «Пока ... КонецЦикла», «Для ... КонецЦикла», «Если ... ИначеЕсли ... Иначе ... КонецЕсли», «Попытка ... Исключение ... КонецПопытки» извне этих конструкций.

Пример:

Перейти ~Метка1; ~Метка1: Сообщить("Осуществлен переход по метке.");

1.4.3.18 Оператор обработки исключительных ситуаций

Оператор «Попытка» позволяет описать реакцию на ошибочную (исключительную) ситуацию, возникшую при выполнении модуля. Реакция может быть задана только для ситуаций, предусмотренных разработчиками системы 1С:Предприятие. Синтаксис этого оператора:

Попытка

// Операторы попытки

Исключение

// Операторы исключения

[ВызватьИсключение ; ]

// Операторы исключения

 КонецПопытки ;

Таблица 1.12 Описание параметров оператора «Попытка»

// Операторы попытки

Исполняемый оператор или последовательность таких операторов.

Исключение

Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов «// Операторы попытки» произошла ошибка времени выполнения.

// Операторы исключения

Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию.

ВызватьИсключение

Оператор позволяет вызвать исключение, в тех случаях, когда, несмотря на отработку исключительной ситуации операторами исключения, необходимо прервать выполнение модуля с ошибкой времени выполнения. Оператор допустим только внутри операторных скобок «Исключение – КонецПопытки». Выполнение данного оператора прекращает выполнение последовательности операторов исключения и производится поиск более «внешнего» обработчика исключения (при вложенных попытках). Если таковой есть, то управление передается на его первый оператор. Если нет, то исключительная ситуация обрабатывается системно, выдается сообщение о первоначально возникшей ошибке, а выполнение модуля прекращается.

КонецПопытки

Ключевое слово, которое завершает структуру оператора обработки исклю­чительных ситуаций.

Оператор «Попытка» управляет выполнением программы, основываясь на возникающие при выполнении модуля ошибочные (исключительные) ситуации и определяет обработку этих ситуаций. В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля, и при этом не предусмотрено определяемых пользователем исключений.

Если при выполнении последовательности операторов «// Операторы попытки» произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку, прерывается, и управление передается на первый оператор последовательности операторов «// Операторы исключения». При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из // Операторы попытки». Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последовательности операторов «// Операторы исключения» управление передается на следующий за ключевым словом «КонецПопытки» оператор. Если же последовательность // Операторы попытки» выполнилась без ошибок, то последовательность операторов «// Операторы исключения» будет пропущена и управление также будет передано оператору, следующему за ключевым словом «КонецПопытки».

Конструкции «Попытка-Исключение-КонецПопытки» могут быть вложенными. При возникновении исключительной ситуации управление будет передано на самый «внутренний» обработчик, начинающийся с ключевого слова «Исключение». Последовательность операторов «// Операторы исключения» может содержать оператор «ВызватьИсключение». Выполнение данного оператора прекращает выполнение последовательности «// Операторы исключения» и производится поиск более «внешнего» обработчика. Если таковой есть, то управление передается на его первый оператор. Если нет, то выполнение модуля прекращается с выдачей сообщения о первоначально возникшей ошибке. Оператор «ВызватьИсключение» может встречаться только внутри операторных скобок «Исключение ... КонецПопытки».

В выдаче диагностики помощь может оказать встроенная функция «ОписаниеОшибки()». Эта функция не имеет параметров, а в качестве значения возвращает описание ошибки, такое же, как было бы выдано в окне сообщений, в случае отсутствия обработчика исключительной ситуации, за исключением описания модуля и строки, в которой ошибка возникла. Применять данную функцию имеет смысл только при выполнении последовательности операторов «// Операторы исключения», так как в ином случае она вернет пустую строку.

Пример:

Процедура СформироватьВЕхсеl()

Попытка

// пытаемся обратиться к программе MS Excel

Табл = Новый ComObject("Excel.Application");

Исключение

Предупреждение(ОписаниеОшибки() +

"; Excel не установлен на данном компьютере!");

Возврат;

КонецПопытки;

// Формирование отчета

...

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