Главная » 1С Предприятие » ПРЕРЫВАНИЯ ЦИКЛА. ОБЪЕДИНЕНИЕ УСЛОВИЙ

0

Выйти  из цикла и  передать  управление на  первый  следующий  за циклом  выполняемый  оператор можно, применив  оператор Прервать.  Чтобы  пропустить  часть  операторов цикла и перейти к следующей итерации, следует использовать оператор  Продолжить.  При этом управление передается оператору начала  цикла оператору Для или Пока. Операторы Прервать и Продолжить отдельно не применяются, а встраиваются в конструкции "если".

Пример.  Сообщить  значение  первой непериодической  константы числового типа.

// Процедура, выводящая значение первой непериодической константы числового типа

// Запускается из обработки Проба  процедура  Выполнить()

перем всегоКонстант, флагВывода, ин, идеи; ОчиститьОкноСообщений();

// флагВывода примет значение 1, если будет обнаружена

// непериодическая константа числового типа флагВывода = 0;

всегоКонстант  = Метаданные.Константа(); для ин = 1 по всегоКонстант цикл

если Метаданные.Константа(ин).Периодический = 1 тогда

продолжить;                      //             Передаем управление оператору Для конецЕсли;

если Метаданные.Константа(ин).Тип = "Число" тогда

идеи = Метаданные.Константа(ин).Идентификатор;

Сообщить(иден +" " + Константа.ПолучитьАтрибут(иден)); //   БалансДней 1 флагВывода = 1;

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

конецЕсли; конецЦикла; // для

если флагВывода = 0 тогда

Сообщить("В  конфигураторе нет непериодических констант числового типа."); конецЕсли;

конецПроцедуры // Выполнить

Замечание.   Иногда  программисты в  цикле Для  вместо  оператора Прервать  прибегают  к изменению значения  переменной цикла ин. Так, в  нашем случае  оператор Прервать мог быть  заменен оператором

ин = всегоКонстант;

Такие действия, однако, классифицируются как плохой  стиль программирования.

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

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

// Процедура, использующая объединение условий и выводящая значение первой

// непериодической  константы числового типа. Запускается из обработки Проба  процедура Выполнить()

перем всегоКонстант, флагВывода, ин, идеи; ОчиститьОкноСообщений();

// флагВывода примет значение 1, если будет обнаружена

// непериодическая константа числового типа флагВывода = 0;

всегоКонстант  = Метаданные.Константа();

ин = 1;                          //               Номер константы пока (ин<= всегоКонстант) и (флагВывода = 0) цикл

если (Метаданные.Константа(ин).Периодический = 0) и (Метаданные.Константа(ин).Тип = "Число") тогда

идеи = Метаданные.Константа(ин).Идентификатор; Сообщить(иден + " " + Константа.ПолучитьАтрибут(иден)); флагВывода = 1;

конецЕсли;

ин = ин + 1;                 //          Не забываем перейти к следующей константе конецЦикла; // для

если флагВывода = 0 тогда

Сообщить("В  конфигураторе нет непериодических констант числового типа."); конецЕсли;

конецПроцедуры // Выполнить

В приведенном коде  объединение условий использовано  при записи ЛВ дважды: (ин <= всегоКонстант)  и (флагВывода = 0)

(Метаданные.Константа(ин).Периодический = 0) и (Метаданные.Константа(ин).Тип = "Число") Это  позволило нам  исключить из процедуры операторы Продолжить и Прервать.

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии