Циклы в 1С (12 из 100 дней)

Циклы в 1С (12 из 100 дней)

Понятие циклов

Цикл - это многократное выполнение одних и тех же операторов встроенного языка.

Циклы используются, например, чтобы:

- Подсчитать итог

- Найти значение в списке

- Сопоставить списки

- Обработать все элементы списка и т.д.

Если какое-то действие нужно выполнить несколько раз - создаем цикл

- Сами действия называют телом цикла. Тело цикла очень похоже на тело блока условий

Циклы в 1С (12 из 100 дней)

- Это тоже операторы, которые программа выполнить несколько раз

Итерация - это один проход цикла

Способы организации циклов

Во встроенном языке есть три хороших способа организации циклов:

- Цикл "Пока"

Циклы в 1С (12 из 100 дней)

- Цикл "Для"

Циклы в 1С (12 из 100 дней)

- Цикл "Для Каждого"

Циклы в 1С (12 из 100 дней)

И есть один плохой способ:

- Цикл через "Перейти" (На практике он никогда не используется)

Цикл "Для"/Цикл с заданным числом повторений

Цикл с заданным числом повторений используется, если известно, сколько раз нужно повторить действие

- Выглядит как цикл "Для .... По"

- В цикл задается переменная, которая будет увеличиваться на единицу в каждый проход

Общий вид цикла

Циклы в 1С (12 из 100 дней)

- Переменная "Счетчик" числовая. Автоматически увеличивается при достижении конца тела цикла

- Цикл вращается до тех пор, пока "Счетчик" не достигнет значения "Верхняя граница"

Общий синтаксис цикла:

Циклы в 1С (12 из 100 дней)

Пример. Цикл выведет все числа от 1 до 10 (включительно):

Циклы в 1С (12 из 100 дней)

Изучим подробнее на примере:

1. Создадим новую обработку "РаботаСЦиклом", создадим команду "ЦиклДля" и также реквизит "Строка"

2. Пропишем следующий код, который выведет нам каждый символ по отдельности из строки и укажет нам его "код символа"

Циклы в 1С (12 из 100 дней)

3. Проверим его работу

Циклы в 1С (12 из 100 дней)

Именование счетчика

- Имя переменной-счетчика произвольное, его придумывает программист

- Имя переменной-счетчика можно сокращать (Стандарты разработки допускают это)

- Распространены имена:

Циклы в 1С (12 из 100 дней)

Цикл "Пока"/Цикл с условием

Цикл с условием используется, когда цикл должен выполняться пока справедливо какое-то условие, но неизвестно точное количество раз цикла.

Пример:

- Пока есть строчки в файле

- Пока не вставили бумагу в принтер - показывать просьбу её вставить

- Пока не заполнен грузовик - подавать груз на транспортер

Много ситуаций, когда цикл работает не по счетчику, а "столько, сколько нужно"

- Цикл с условием начинается с ключевого слова "Пока", за которым следует логическое выражение

- Если выражение истинно - цикл начнется и будет работать, пока выражение не станет ложным

Синтаксис:

Циклы в 1С (12 из 100 дней)

Зацикливание

- Возможно ситуации, когда цикл будет вечным

Циклы в 1С (12 из 100 дней)

- Если выражение никогда не принимает значение "Ложь", цикл никогда не закончится. С виду программу будет "висеть", а внутри будет вечно вращать цикл

Пример с подсчетом рабочих дней в интервале дат ДатаНач-ДатаКон:

Циклы в 1С (12 из 100 дней)

Давайте на практике разберемся с циклом "Пока"

1. В нашем же обработчике создадим команду "ЦиклПока" и два реквизита "ДатаНачало" и "ДатаКонец"

2. Пропишем следующий код, чтобы вычислять кол-во рабочих дней (важно увеличивать наш счетчик на сутки, прибавляя 86400 секунд)

Циклы в 1С (12 из 100 дней)

3. Посмотрим, как работает алгоритм - увидим, что вызывается побочный эффект, что ДатаНачало меняется на ДатуКонец

Циклы в 1С (12 из 100 дней)

4. Давайте исправим этом с добавлением дополнительной переменной

Циклы в 1С (12 из 100 дней)

5. Теперь все выводится корректно

Циклы в 1С (12 из 100 дней)

Цикл "Для Каждого"

Коллекции - это наборы структурированных элементов, данных, с которыми можно проводить определенные операции

Циклы по коллекции значений

- К коллекциям можно отнести массив подстрок, получаемый при помощи функции СтрРазделить, или, например, таблицу формы

- Цикл по коллекции, или совместный цикл, используется для перебора коллекций и выполнения операций над элементами коллекции

- Цикл по коллекции похож на цикл "Для", но используется для обхода не чисел в диапазоне, а элементов коллекции

- Обобщено цикл записывается так:

Циклы в 1С (12 из 100 дней)

Пример. Код разбивает текст на слова и выводит их одно за другим:

Циклы в 1С (12 из 100 дней)

- Упорядоченные коллекции обходятся по порядку

- СтрРазделить() из примера возвращает строки в порядке их следования в исходной строке, и слова выведены по порядку

Реализуем это:

1. В нашем обработчике создадим новую команду "ЦиклДляКаждого", а также новый реквизит "Текст"

2. Пропишем следующий код в команде

Циклы в 1С (12 из 100 дней)

3. Посмотрим, как происходит выполнение

Циклы в 1С (12 из 100 дней)

Рассмотрим также такую задачу - "Поиск самого длина слова в тексте"

1. Пропишем следующий код

Циклы в 1С (12 из 100 дней)

2. Посмотрим на результат

Циклы в 1С (12 из 100 дней)

Помимо работы с массивами, цикл "Для Каждого" можно использовать с таблицами

1. Создадим на форме реквизит "ТабличныеЗначения" и создадим две колонки

Циклы в 1С (12 из 100 дней)

2. Перенесем всю таблицу на форму и пропишем следующую логику для команду "ЦиклДляКаждого"

Циклы в 1С (12 из 100 дней)

3. Запустим обработку и увидим, что все выводится корректно

Циклы в 1С (12 из 100 дней)

Причем система проходится сначала по одной строке, потом переходит к другой

Вложенность и управляющие слова

Вложенный цикл

Организован в теле внешнего цикла и выполняются при каждой итерации данного цикла

Пример (Поиск первых ста простых чисел):

Циклы в 1С (12 из 100 дней)

Давайте рассмотрим этом пример на практике:

1. Создадим новую команду "ВложенныйЦикл" в нашей обработке

2. Пропишем следующий код (Простое число - это число, которое делится на себя и на 1):

Циклы в 1С (12 из 100 дней)

- Первый цикл нам нужен, чтобы найти 100 первых чисел

- Второй цикл работает так, что мы будем увеличивать делитель до тех пор, пока он не достигнет верхней границы самого числа (Для 5, делитель будет = 2, потом 3, потом 4, каждое из этих чисел не будет равно нулю, а значит число точно простое)

3. Запустим код и увидим, что нам вывелись все наши простые числа

Но стоит понимать, что выполнение такого кода в 1С трудоемко, но я показал самый простой способ поиска простого числа, поэтому как раз следует использовать управляющие слова.

Прерывание и продолжение

Внутри цикла возможно использование двух управляющих слов:

Циклы в 1С (12 из 100 дней)

- Прервать (Используется, чтобы немедленно завершить текущий цикл, даже если он ещё не закончился, возвращает нас в конец цикла)

Циклы в 1С (12 из 100 дней)

- Продолжить (Используется, когда нет необходимости продолжать текущую итерацию и надо немедленно перейти к следующей и возвращает нас в начало цикла)

Циклы в 1С (12 из 100 дней)

Они позволяют управлять течением любого цикла отдельно от условия или счетчика.
Встретимся с вами уже завтра с универсальными коллекциями

1