1с 8 для каждого из цикл. Прерывания цикла

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

Таблица 1

Действие

Сочетания клавиш

Как работает программа

Создать новый документ

Открыть существующий документ

Открыть калькулятор

Открывает калькулятор

Показать свойства

Alt + Enter
Ctrl + E

Открыть окно сообщений

Закрыть окно сообщений

Ctrl + Shift + Z

Открыть табло

Открывает табло

Открыть справку

Открывает справку

Вызвать индекс справки

Shift + Alt + F1

Вызывает индекс справки

"Горячие" клавиши: глобальные действия

Глобальные действия - это действия, которые вы можете выполнять в любом состоянии программы. При этом не важно, что на данный момент открыто в "1С:Предприятии". Главное, чтобы приложение не было занято выполнением какой-либо задачи.

Глобальные действия - это действия, которые можно вызывать в любом месте запущенной платформы "1С:Предприятие 8". Независимо от того, что именно происходит в запущенной конфигурации, смысл глобальных действий не меняется (например, нажатие Ctrl+N всегда будет вызывать диалог создания нового документа).

Таблица 1

"Горячие" клавиши для глобальных действий

Действие

Сочетания клавиш

Как работает программа

Создать новый документ

Открывает окно, в котором будет предложено выбрать тип создаваемого нового документа в различных форматах - например, в текстовом, табличном или HTML

Открыть существующий документ

Открывает стандартное диалоговое окно "Открыть", доступное через меню "Файл/Открыть…"

Активизация поля поиска в командной панели

Устанавливает курсор в это поле

Открыть калькулятор

Открывает калькулятор

Показать свойства

Alt + Enter
Ctrl + E

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

Открыть окно сообщений

Позволяет открыть ранее закрытое окно сообщений. Часто бывает полезно, когда окно случайно закрыто, а сообщение из него вам понадобилось. Обратите внимание: пока система ничего снова не ввела в окно сообщений, старые сообщения сохраняются даже в закрытом окне

Закрыть окно сообщений

Ctrl + Shift + Z

Закрывает окно сообщений, когда они больше не нужны. Обратите внимание: комбинация подобрана так, что ее легко нажать одной рукой

Открыть табло

Открывает табло

Открыть справку

Открывает справку

Вызвать индекс справки

Shift + Alt + F1

Вызывает индекс справки

"Горячие" клавиши: общие действия

Общие действия - действия, которые имеют один и тот же смысл в различных объектах конфигурации, но поведение платформы "1С:Предприятие 8" меняется в зависимости от того где именно вы используете то или иное общее действие. Например, нажатие на клавишу "Del", помечает на удаление текущий элемент справочника, если вы находитесь в окне списка элементов справочника. Или удаляет содержимое текущей ячейки табличного документа, если вы его редактируете.

Таблица 2

"Горячие" клавиши для общих действий

Действие

Сочетания клавиш

Как работает программа

Удаляет элемент под курсором (текущий элемент) или выделенную группу элементов

Добавить

Позволяет добавить новый элемент

Сохраняет активный документ

Печать активного документа

Вызывает диалог печати для активного документа

Печать на текущий принтер

Ctrl + Shift + P

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

Копировать в буфер обмена

Ctrl + C
Ctrl + Ins

Копирует необходимый элемент или выделенную группу элементов в буфер обмена ОС Windows

Вырезать в буфер обмена

Ctrl + X
Shift + Del

Вырезает необходимый элемент или выделенную группу элементов в буфер обмена ОС Windows. Отличается от копирования тем, что копируемый элемент или группа после попадания в буфер удаляется

Вставить из буфера обмена

Ctrl + V
Shift + Ins

Вставляет в место, отмеченное курсором находящиеся данные из буфера обмена ОС Windows

Добавить к буферу обмена как число

Shift + Num + (*)

Используется для числовых значений

Добавить к буферу обмена

Shift + Num + (+)

Используется для числовых значений. Операция сложения с данными в буфере обмена

Вычесть из буфера обмена

Shift + Num + (-)

Используется для числовых значений. Операция вычитания с данными в буфере обмена

Выделить все

Отменить последнее действие

Ctrl + Z
Alt + BackSpace

Вернуть отмененное действие

Ctrl + Y
Shift + Alt + BackSpace

Найти следующий

Найти следующий выделенный

Найти предыдущий

Найти предыдущий выделенный

Ctrl + Shift + F3

Заменить

Ctrl + Num + (-)

Выделить все

Выделяет все доступные элементы в активном документе

Отменить последнее действие

Ctrl + Z
Alt + BackSpace

Отменяет последнее совершенное действие

Вернуть отмененное действие

Ctrl + Y
Shift + Alt + BackSpace

Позволяет отменить "Ctrl + Z", иными словами - вернуть то, что вы сделали до нажатия отмены последнего совершенного действия

Открывает диалог настройки параметров поиска в активном объекте конфигурации и выполнения этого поиска

Найти следующий

Находит следующий элемент, соответствующий указанным в настройках поиска параметрам

Найти следующий выделенный

Находит следующий элемент, соответствующий тому, который вы выделили (например, на котором установлен курсор)

Найти предыдущий

Находит предыдущий элемент, соответствующий указанным в настройках поиска параметрам

Найти предыдущий выделенный

Ctrl + Shift + F3

Находит предыдущий элемент, соответствующий тому, который вы выделили

Заменить

Открывает диалог поиска и замены значений (там, где это разрешено)

Свернуть (узел дерева, группу табличного документа, группировку модуля)

Ctrl + Num + (-)

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

Свернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные

Ctrl + Alt + Num + (-)

Свернуть (все узлы дерева, группы табличного документа, группировки модуля)

Ctrl + Shift + Num + (-)

Развернуть (узел дерева, группу табличного документа, группировку модуля)

Ctrl + Num + (+)

Развернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные

Ctrl + Alt + Num + (+)

Развернуть (все узлы дерева, группы табличного документа, группировки модуля)

Ctrl + Shift + Num + (+)

Следующая страница

Ctrl + Page Down
Ctrl + Alt + F

Быстрое листание активного документа

Предыдущая страница

Ctrl + Page Up
Ctrl + Alt + B

Включить/выключить жирность

Используется там, где поддерживается и возможно форматирование текста

Включить/выключить курсив

Включить/выключить подчеркивание

Переход к предыдущей web-странице/главе справки

Используется в HTML-документах

Переход к следующей web-странице/главе справки

Прервать исполнение отчета системы компоновки данных

"Горячие" клавиши: управление окнами

В этом разделе объединены общие для всех окон и форм платформы "1С:Предиприятие" "горячие" клавиши.

Таблица 3

"Горячие" клавиши для управления окнами

Действие

Сочетания клавиш

Как работает программа

Закрыть активное свободное окно, модальный диалог или приложение

Этой комбинацией можно быстро завершить работу всей конфигурации на платформе "1С:Предприятие", поэтому пользуйтесь ей осторожно

Закрыть активное обычное окно

Закрывает текущее обычное окно

Закрыть активное окно

Закрывает текущее активное окно

Активизировать следующее обычное окно

Ctrl + Tab
Ctrl + F6

Позволяет активизировать следующее окно среди открытых в рамках конфигурации. Нажатие в цикле с удерживанием клавиши Ctrl позволяет листать отрытые окна "вперед"

Активизировать предыдущее обычное окно

Ctrl + Shift + Tab
Ctrl + Shift + F6

Позволяет активизировать предыдущее окно среди открытых в рамках конфигурации. Нажатие в цикле с удерживанием клавиши Ctrl позволяет листать отрытые окна "назад"

Активизировать следующую секцию окна

Активирует следующую секцию текущего окна

Активизировать предыдущую секцию окна

Активирует предыдущую секцию текущего окна

Вызвать системное меню приложения или модального диалога

Позволяет увидеть системное меню операций (свернуть, переместить, закрыть и т. п.) над окном программы или открытого модального диалога

Вызвать системное меню окна (кроме модальных диалогов)

Alt + Hyphen + (-)
Alt + Num + (-)

Позволяет увидеть системное меню операций (свернуть, переместить, закрыть и т. п.) над активным окном

Вызвать главное меню

Активирует главную панель с кнопками текущего окна. Тем самым вы можете выбирать действия без участия мыши

Вызвать контекстное меню

Отображает контекстное меню над текущим активным элементом. Аналогично нажатию правой кнопки мыши на нем

Вернуть активность обычному окну

Возвращает активность обычному окну после работы с контекстным меню. Внимание! В любом другом случае, Esc инициирует закрытие активного окна

"Горячие" клавиши: управление формами

Здесь собраны "горячие" клавиши, упрощающие и ускоряющие работу с различными формами, которые созданы в конфигурациях, написанных на платформе "1С:Предприятие".

Таблица 4

"Горячие" клавиши для управления формами

Действие

Сочетания клавиш

Как работает программа

Перейти на следующий элемент управления/вызов кнопки по умолчанию

Переход между элементами управления на форме "вперед" (см. Tab)

Вызов кнопки по умолчанию

Как правило, у различных форм назначена кнопка по умолчанию (она отличается от других - например, выделена жирным). Использование этой комбинации клавиш позволяет из любого места открытой формы активировать кнопку по умолчанию

Перейти на следующий элемент управления

Переход между элементами управления на форме "вперед"

Перейти на предыдущий элемент управления

Переход между элементами управления на форме "назад"

Активизирует командную панель, связанную с активным элементом управления/формой

Активирует главную панель с кнопками текущей формы. Тем самым вы можете выбирать действия без участия мыши

Перемещение по элементам управления, объединенным в одну группу

Up
Down
Left
Right

Используя клавиши-курсоры можно быстро перемещаться между сгруппированными элементами управления

Закрыть форму

Закрывает окно текущей формы

Восстановить положение окна

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

"Горячие" клавиши: работа со списком и деревом

"Горячие" клавиши этого раздела помогут эффективно работать без использования мыши в многочисленных списках и деревьях, которые активно используются в различных объектах конфигураций на платформе "1С:Предприятие 8".

Таблица 5

"Горячие" клавиши для работы со списком и деревом

Действие

Сочетания клавиш

Как работает программа

Открывает для изменения элемент, на который установлен курсор. Клавиша аналогична действию "Изменить" на стандартной панели кнопок формы

Обновить

Ctrl + Shift + R
F5

Обновляет данные в списке или дереве. Особенно актуально для динамических списков (например, список документов), когда для них не включено автообновление

Скопировать

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

Новая группа

Создает новую группу. Аналогично кнопке "Добавить группу"

Удаление строки

Непосредственное удаление текущего элемента. Внимание! Используйте эту комбинацию с большой осторожностью в динамических списках, так как отменить удаление нельзя

Перемещение строки вверх

Ctrl + Shift + Up

В списках, где разрешено изменение порядка строк, позволяет передвинуть текущую строку вверх. Аналогично кнопке "Переместить вверх"

Перемещение строки вниз

Ctrl + Shift + Down

В списках, где разрешено изменение порядка строк, позволяет передвинуть текущую строку вниз. Аналогично кнопке "Переместить вниз"

Перенести элемент в другую группу

Ctrl + Shift + M
Ctrl + F5

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

Перейти на уровень вниз с одновременным раскрытием группы

Переходит внутрь папки, на которой был установлен курсор

Перейти на уровень вверх (к "родителю")

Выходит наверх из папки, в которой вы находились

Закончить редактирование

Завершает с сохранением изменений редактирование элемента списка

Прервать поиск

Прерывает поиск

Раскрыть узел дерева

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

Закрыть узел дерева

Раскрыть все узлы дерева

Изменение флажка

Инвертирует значение флажка текущего элемента (включает или отключает его)

"Горячие" клавиши: поле ввода

Поле ввода - активно используемый элемент управления во множестве мест форм конфигураций. "Горячие" клавиши для поля ввода позволяют быстро выполнить часто используемые действия над ним. Особенно полезно использовать эти клавиши там, где разработчик конфигурации не вывел нужные вам кнопки управления полем ввода.

Таблица 6

"Горячие" клавиши для поля ввода

Действие

Сочетания клавиш

Как работает программа

Аналогично поведению при редактировании обычного текста, позволяет либо добавлять новые символы при вводе к старым, либо затирать старые новыми

Кнопка выбора

Выбор соответствующего объекта, связанного с полем ввода (например, выбор нужного документа из списка). Аналогично кнопке поля ввода "Выбор"

Кнопка открытия

Ctrl + Shift + F4

Открытие формы выбранного объекта в текущем поле ввода. Аналогично нажатию кнопки поля ввода "Открыть"

Очистить поле

Очистить поле ввода от текущего в нем значения

Работа с набранным текстом в поле ввода

Ctrl + BackSpace

Перейти в начало строки

Перейти в конец строки

Нажатие указателем мыши кнопки "Вверх" для кнопки регулирования

Использование регулировки, если это разрешено в поле ввода. Например, изменение дат, счетчиков и т. п. Аналогично нажатию на кнопку "вверх" регулятора поля ввода

Нажатие указателем мыши кнопки "Вниз" для кнопки регулирования

Использование регулировки, если это разрешено в поле ввода. Например, изменение дат, счетчиков и т. п. Аналогично нажатию на кнопку "вниз" регулятора поля ввода

"Горячие" клавиши: поле картинки

Поле картинки - это стандартный элемент платформы "1С:Предприятие 8" для отображения графических изображений. "Горячие" клавиши помогут, например, комфортно просмотреть изображение, расположенное в поле картинки.

Таблица 7

"Горячие" клавиши для поля картинки

Действие

Сочетания клавиш

Как работает программа

Увеличить масштаб

Масштабирует картинку

Уменьшить масштаб

Прокрутить

Up
Down
Left
Right

Перемещение по картинке

Прокрутить на размер окна вверх

Прокрутить на размер окна вниз

Прокрутить на размер окна влево

Прокрутить на размер окна вправо

"Горячие" клавиши: редактор табличных документов

В этом разделе сгруппированы "горячие" клавиши для разнообразных табличных документов. Они могут оказаться очень полезными, если вы часто редактируете данные в таких документах.

Таблица 8

"Горячие" клавиши для редактора табличных документов

Действие

Сочетания клавиш

Как работает программа

Перейти к ячейке

Открывает диалоговое окно перемещения к ячейке с координатами столбец/строка

Перемещение по ячейкам

Up
Down
Left
Right

Перемещает курсор по ячейкам таблицы

Перемещение по ячейкам к следующей заполненной или пустой

Ctrl + (Up, Down, Left, Right)

Перемещает курсор по заполненным ячейкам таблицы

Выделение ячеек

Shift + (Up, Down, Left, Right)

Выделяетобласть ячеек, начиная с текущей

Прокрутить на страницу вверх

Листает табличный документ

Прокрутить на страницу вниз

Прокрутить на страницу влево

Прокрутить на страницу вправо

Перейти к редактированию содержимого ячейки

Включает режим редактирования содержимого ячейки

Переключение режима редактирования/ввода в ячейке

Перейти в начало строки

Перемещает курсор в начало строки

Перейти в конец строки

Перемещает курсор в конец строки

Перейти в начало текста

Перейти в конец текста

Установка имени текущей области

Ctrl + Shift + N

Устанавливает имя текущей области ячеек

"Горячие" клавиши: редактор текстовых документов

"Горячие" клавиши при редактировании текста в текстовых областях и документах позволяют существенно ускорить и упростить процесс.

Таблица 9

"Горячие" клавиши для редактора текстовых документов

Действие

Сочетания клавиш

Как работает программа

Переключить режим вставки/замены

Позволяет либо добавлять новые символы при вводе к старым, либо затирать старые новыми

Перейти в начало строки

Перемещает курсор в начало текущей строки

Перейти в конец строки

Перемещает курсор в конец текущей строки

Выделить до начала строки

Выделяет текст до начала строки

Выделить до конца строки

Выделяет текст до конца строки

Перейти в начало текста

Перемещает курсор в начало текста

Перейти в конец текста

Перемещает курсор в конец текста

Выделить до начала текста

Ctrl + Shift + Home

Выделяет от курсора до начала текста

Выделить до конца текста

Ctrl + Shift + End

Выделяет от курсора до конца текста

Прокрутить на одну строку вверх

Листает текстовый документ

Прокрутить на одну строку вниз

Перейти к началу предшествующего слова

Перейти к началу следующего слова

Выделить предшествующее слово

Ctrl + Shift + Left

Быстрое выделение слова (символы, разделенные пробелами)

Выделить следующее слово

Ctrl + Shift + Right

Прокрутить на страницу вверх

Листает текстовый документ

Прокрутить на страницу вниз

Выделить предыдущую страницу текста

Постранично выделяет текст

Выделить следующую страницу текста

Shift + Page Down

Снять выделение

Снимает выделение

Перейти к строке

Перемещает курсор к строке с номером

Удалить символ слева от курсора

Удаляет символ слева от курсора

Удалить символ справа от курсора

Удаляет символ справа от курсора

Удалить слово слева от курсора

Ctrl + BackSpace

Удаляет слово слева от курсора

Удалить слово справа от курсора

Удаляет слово справа от курсора

Установить/снять закладку

Помечает нужную вам строку

Следующая закладка

Перемещает курсор между отмеченными закладками строками

Предыдущая закладка

Удалить текущую строку

Удаляет текущую строку

Сдвинуть блок вправо

Сдвигает выделенный блок текста вправо

Сдвинуть блок влево

Сдвигает выделенный блок текста влево

Алгоритмы многих программ зачастую предполагают циклическое повторение определённых действий. 1С в этом случае не является исключением. Циклы в 1С позволяют:

  • Перебрать элементы справочника;
  • Заполнить области макета;
  • Выполнить определенные действия с выборкой документов;
  • И многое многое другое.

Типы циклов

В 1С принято различать три типа циклов в зависимости от набора слов, входящих в конструкцию:

  1. Для каждого «Переменная» из «Коллекция значений»;
  2. Для «Переменная» = «Нач. значение» По «Кон. Значение»;
  3. Пока «Выражение».

Рассмотрим их подробнее.

Для каждого из

Этот обходчик подходит для коллекций значений (выборка документов или элементов справочника, сток ). Выполнение будет происходить до тех пор, пока последний элемент коллекции не будет пройден. В строке должны быть указаны:

  • Переменная, определяющая текущий элемент коллекции;
  • Определение коллекции значений.

Наиболее часто возникающая ошибка в этом случае показана на рис.1

Чаще всего она возникает, когда программист не до конца понимает разницу между объектом (документом, справочником) и коллекцией (выборкой) значений, получаемой с помощью оператора Выбрать().

Для по

В качестве параметров, передаваемых в строку, в этом случае выступают:

  1. Имя переменной – итератора;
  2. Начальное значение переменной;
  3. Конечное значение переменной.

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

Такая конструкция очень часто используется при обходе табличных частей.

При использовании данного обходчика важно различать количество строк табличной части и индекс отдельной взятой строки. В первом случае начальное значение будет равно 1, конечное можно получить с помощью оператора Количество(). Индексы начинаются с 0 и заканчиваются Количество()-1. В противном случае можно получить ошибку (Рис.2).

Пока

Здесь всего один параметр – логическое выражение, которое перед каждым следующим шагом цикла проверяется на истинность. Как только логическое выражение не будет выполнено, обработчик завершит обход.

Очень важно понимать, что в некоторых случаях проверяемое выражение может постоянно находиться в значении Истина, тем самым обход будет совершаться бесконечное количество раз, подвешивая систему.

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

Иногда может сложиться ситуация, когда истинность проверяемого выражения не наступит никогда. Это может привести к бесполезным поискам ошибки в коде и потере времени.

Прерывание выполнения нажатием комбинации клавиш

Если в теле цикла прописать процедуру ОбработкаПрерыванияПользователя(), то в любой момент его выполнения, нажав комбинацию клавиш Ctrl+PauseBreakможно остановить его работу. В этом случае в окне сообщений будет выведена строка (Рис.3).

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

Прерывание по условию

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

Правильно записанный в код программы этот оператор выделяется красным цветом.

Перескакивание некоторых операций цикла

Зачастую в цикле необходимо проверять выполнение какого-либо условия и в случае, если это условие не выполняется, проскакивать основной обработчик. Такие конструкции могут быть реализованы двумя способами:

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

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

21
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, " ЧЦ=10; ЧДЦ=2"); // ЗначФормат = " 123 456,79" ЗначФормат = Формат(123456.789, " ЧГ=0; ЧДЦ=2"); // Знач 16
Полнотекстовый поиск - позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив... 8
" Момент времени" - виртуальное поле, не хранится в базе данных. Содержит объект МоментВремени (который включает в себя дату и ССЫЛКУ НА ДОКУМЕНТ) В 7.7 было понятие ПозицияДокумента, а в 8.x Момент времени Для получения... 6
Для 8.х НайтиПоСсылкам (FindDataByRef) Синтаксис: НайтиПоСсылкам (Список ссылок) Параметры: Список ссылок Обязательный Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти. ...

12 декабря 2014 в 13:13

Какой цикл быстрее? Тестируем 1С

  • Высокая производительность ,
  • Ненормальное программирование ,
  • Программирование

Занимаюсь программированием 1С уже несколько лет, и тут посетила мысль - «А не пройти ли какой-нибудь обучающий курс, вдруг в знаниях есть какие-то пробелы, о которых раньше даже и не подозревал»? Сказано-сделано. Сижу, слушаю курс, дохожу до циклических операторов и тут вторая мысль (да, не часто они у меня появляются) - «А какой цикл быстрее»? Надо бы проверить.
Итак, я нашел пять способов , как можно организовать цикл средствами 1С.

Первый вид цикла, назовем его условно «ДляПо» выглядит так:

Для н = 0 по КоличествоИтераций Цикл КакиеТоДействия(); КонецЦикла;
Второй вид «ДляКаждого» :

Для Каждого ЭлементКоллекции из Коллекция Цикл КакиеТоДействия(); КонецЦикла;
Третий «Пока» :

Пока н <> КоличествоИтераций Цикл КакиеТоДействия(); н = н + 1; КонецЦикла;
Далее вспомнил ассемблерную молодость - цикл «Если» :

~НачалоЦикла: Если н <> КоличествоИтераций Тогда КакиеТоДействия(); н = н + 1; Перейти ~НачалоЦикла; КонецЕсли;
Ну и напоследок «Рекурсия»

Процедура РекурсивныйЦикл(н, КоличествоИтераций) КакиеТоДействия(); Если н <> КоличествоИтераций Тогда РекурсивныйЦикл(н+1, КоличествоИтераций); КонецЕсли; КонецПроцедуры
Естественно, что относить рекурсию к циклам не совсем корректно, но тем ни менее с её помощью можно добиться похожих результатов. Сразу оговорюсь, что в дальнейшем тестировании рекурсия не участвовала. Во первых все тесты проводились при 1 000 000 итераций, а рекурсия выпадает уже при 2 000. Во вторых скорость рекурсии в десятки раз меньше, чем скорость остальных циклов.

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

Ну что ж, поехали. В качестве тела цикла использовалось чтение из заранее заполненного массива.


или, при использовании цикла «ДляКаждого»

ПриемникТестовогоЗначения = Элем;
Тестирование проводилось на платформе 8.3.5.1231 для трех видов интерфейса (Обычное приложение, Управляемое приложение и Такси).
Числа это время в миллисекундах полученное с помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах() , которую я вызывал до цикла и после его завершения. Числа дробные, потому что я использовал среднее арифметическое пяти замеров. Почему я не использовал Замер производительности? У меня не было цели замерить скорость каждой строчки кода, только скорость циклов с одинаковым результатом работы.

Казалось бы и все, но - тестировать так тестировать!
Результат для платформы 8.2.19.106
В среднем платформа 8.2 на 25% быстрее, чем 8.3. Я немножко не ожидал такой разницы и решил провести тест на другой машине. Результаты приводить не буду, в можете сами нагенерировать их с помощью вот этой конфигурации. Скажу только, что там 8.2 была быстрее процентов на 20.

Почему? Не знаю, дезасемблировать ядро в мои планы не входило, но в замер производительности я все же заглянул. Оказалось, что сами циклические операции в 8.3 проходят несколько быстрее, чем в 8.2. Но на строке
ПриемникТестовогоЗначения = ТестовыйМассив.Получить(н);
то есть при считывании элемента коллекции в переменную происходит значительное снижение производительность.

В итоге:
К чему всё это? Для себя я сделал несколько выводов:

1. Если есть возможность использовать специализированный цикл - «ДляКаждого», то лучше использовать его. Кстати, сам по себе он отрабатывает дольше чем другие циклы, но скорость доступа к элементу коллекции у него на много выше.
2. Если заранее знаешь количество итераций - используй «ДляПо». «Пока» отработает медленнее.
3. Если использовать цикл «Если» - другие программисты тебя явно не поймут.