Как вывести таблицу умножения в 1с
В статье будут описаны циклы 1с 8: их разновидности, назначение и применение. А также рассмотрены примеры их использования для конкретных задач. Цикл в 1с, как и в других языках программирования, предназначен для многократного повторения операторов, находящихся внутри него.
В 1с существует три вида циклов:
Вид цикла | Описание |
---|---|
Пока | Цикл осуществляющий повторения, пока выполняется условие. |
Для | Цикл осуществляющий заданное количество повторений. |
Для каждого | Цикл для обхода коллекций. Обходит каждую строку заданной коллекции. |
Цикл Пока
Данный цикл предназначен для осуществления повторений, пока выполняется условие. Синтаксис цикла выглядит так:
Для выполнения очередного повторения Логическое выражение должно возвращать значение Истина. Это работает следующим образом:
- Вычисляем значение Логического выражения. Если оно Ложь, цикл завершается. Если Истина:
- Выполняем операторы цикла;
- Возвращаемся на п. 1.
Таким образом в цикле Пока нам необходимо не только выполнить требуемое действие, но и изменить переменную участвующую в проверке его условия. Если забыть это сделать, можно получить бесконечный цикл, который приведет к зависанию системы.
Пример 2. А теперь только не четные, в интервале от 1 до 100, в обратном порядке.
В примере используется операция %. Она получает остаток от деления одного числа на другое.
При помощи цикла Пока можно обойти массив или любую другую коллекцию в обратном порядке. Это необходимо не часто, но реализовать такой механизм при помощи других циклов проблематично. Рассмотрим такой механизм в примере 3.
Также цикл Пока часто используется для обхода выборки из результата запроса. У выборки для этого есть специальный метод Следующий(). Он осуществляет переход на следующую строку и возвращает Истина, если такая строка есть. Если же следующая строка отсутствует в выборке, метод возвращает Ложь. Нельзя забывать, что работу с запросом можно осуществлять только в серверной процедуре (или функции).
Пример 4. При помощи запроса выбрать всех пользователей, кроме недействительных. Обойти выборку циклом Пока.
Цикл Для
Предназначен для осуществления заданного количества повторений, это так называемый цикл со счетчиком.
При каждом проходе цикл увеличивает значение в переменной Счетчик на 1. Начальное значение счетчика указывается в Выражение1, конечное в Выражение2.
Пример 5. Воспользуемся заданием из первого примера и выведем числа от 1 до 10.
Таким образом в начале выполнения, переменная счетчик будет содержать значение 1. При каждом следующем повторении значение счетчика будет увеличиваться также на единицу, пока не достигнет 10. Повторение со значением счетчика 10, будет последним.
То есть при помощи цикла Для мы обходим номера символов строки. А внутри цикла получаем символ по его номеру.
Цикл Для Каждого
Используется для обхода коллекций. Может обходить таблицы значений, массивы, структуры, списки значений (и любые другие коллекции).
В Переменная2 указывается коллекция, а в Переменная1 на каждом проходе цикла будет содержаться элемент коллекции. Контролировать количество элементов при этом не нужно, это делается автоматически. То есть цикл закончит выполняться, как только закончатся элементы коллекции.
Пример 7. Получить сумму элементов числового массива.
В переменной ЭлементМассива при каждом повторении цикла содержится число. Сложив их все, получаем: 101,4.
Цикл Для Каждого часто используется для обхода таблиц значений. В этом случае при каждом повторении цикла переменная элемента коллекции будет содержать не конкретное значение, а строку таблицы. В частности таблицу значений можно получить при выгрузке результата запроса (метод Выгрузить()).
Пример 8. При помощи запроса выбрать всех пользователей. Выгрузить результат в таблицу значений, обойти ее и вывести пользователей с заполненным физическим лицом.
Специальные операторы циклов
Циклы 1с могут использовать специальные операторы Продолжить и Прервать. Они предназначены для предварительного завершения итерации и всего цикла соответственно.
Оператор Продолжить завершает текущее повторение цикла, не дожидаясь выполнения следующих за ним операторов. То есть с его помощью мы можем пропускать не нужные действия внутри цикла.
Пример 9. Немного модифицируем код из предыдущего примера, и напишем его с использованием оператора Продолжить.
Завершаем проход цикла, если физическое лицо не заполнено. Метод Сообщить будет выполняться, только при условии наличия физлица.
С оператором Прервать все еще проще, он завершает выполнение цикла. Вне зависимости от того, сколько повторений еще должно было выполниться.
Пример 10. Рассмотрим задачу из самого первого примера. Выведем числа от 1 до 10 циклом Пока. Но при этом модифицируем программный код.
Если в таком цикле не использовать оператор Прервать, то он станет бесконечным, так как в выражении напрямую установлено значение Истина. Получается, что проверка выхода из шапки цикла, перенесена в его тело. Конечно, в таком виде циклы 1с вряд ли будут использоваться, для решения подобной задачи. Но существуют реальные случаи применения конструкции Пока Истина Цикл, когда условие цикла задать проблематично и проще его прервать в нужный момент.
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: циклы в 1С часть 2
Автор уроков и преподаватель школы: Владимир Милькин
На прошлом занятии мы изучили первый из двух существующих в языке 1С циклов: Цикл Для.
Сегодня нас ждет второй вид цикла: Цикл Пока.
Цикл Пока
Конструкция цикла выглядит так:
Команды, заключенные между словами Цикл и КонецЦикла выполняются пока ЛогическоеВыражение равно Истине.
В качестве логического выражения может быть любое условие. Пока это условие верно (то есть равно Истина) выполнение команд в цикле повторяется снова и снова, как только условие перестало быть верным команды перестают выполняться.
Решение задачи вывода чисел от 1 до 10, с применением только что изученного цикла, будет выглядеть так:
Компьютер встретив такую конструкцию выполняет её так:
- Первой командой компьютер сопоставит имени Шаг значение равное 1.
- Так как имя Шаг на данном этапе равно единице - условие цикла верно (Шаг <= 10) - компьютер выводит единицу и увеличивает имя Шаг до 2.
- Имя Шаг равно 2, но условие цикла по-прежнему верно, поэтому компьютер выводит 2 и увеличивает имя Шаг до 3.
- .
- Имя Шаг равно 10, условие цикла всё ещё верно - компьютер выводит 10 и увеличивает имя Шаг до 11.
- Стоп! Условие цикла перестало выполняться, теперь Шаг (вернее его значение 11) больше 10. Команды цикла больше не выполняются.
Задание №23. Измените приведенный выше пример, чтобы выводились числа от 10 до 100.
Не торопитесь смотреть ответ! Сначала попробуйте выполнить задание сами.
Напоминаю, что все примеры из заданий нужно обязательно выполнять на компьютере. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
А как вы думаете сколько раз выполнятся следующие циклы:
Не торопитесь выполнять эти примеры на компьютере! Ведь это, так называемые, бесконечные циклы. Которые начав выполняться - никогда не закончатся, потому что их логическое условие всегда равно Истина.
А вот следующие примеры можно смело пробовать на компьютере:
Ведь эти циклы являются примерами бесполезных. Они никогда не выполнятся, потому что их логическое условие всегда равно Ложь.
Задание №24. Напишите программу, которая выводит на экран числа от 10 до 1, используя Цикл Пока. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Программа должна занимать ровно пять строк.
Ниже привожу решение, но рассчитываю, что вы справитесь с задачей самостоятельно.
Пользователь вводит значения А и Б, нажимает сформировать. Отчет формирует таблицу умножения в диапазоне от А до Б.
Сделан на СКД с использованием набора данных.
Тестировалось на 1С:Предприятие 8.3 (8.3.13.1690).
Специальные предложения
Просмотры 5964
Загрузки 2
Рейтинг 4
Создание 05.07.19 16:05
Обновление 05.07.19 16:05
№ Публикации 826692
Кому Для всех
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Быстрый запрос Промо
1 стартмани
29.04.2019 17458 30 mkalimulin 34
Печать бланков почтового перевода ф.ЭП112
Внешний дополнительный отчет для печати бланков почтового перевода ф.ЭП112 по исполнительным листам.
1 стартмани
07.09.2020 3302 3 mrmr 0
Универсальный отчет по документам "Документы в разрезе"
1 стартмани
28.01.2020 4612 11 pophmail 3
Поиск местоположения объекта на карте по координатам
Карта с использованием WebKit. При открытии обработки сразу указывается местоположение на карте.
2 стартмани
17.01.2020 4381 1 Margo462 1
Отчет "Анализ состава объектов в подписке на события".
1 стартмани
27.12.2019 3033 5 serg-lom89 8
Просмотр значений реквизитов объекта
Позволяет просматривать значения всех реквизитов и табличных частей любого объекта конфигурации.
1 стартмани
16.12.2019 4088 8 gorevg 0
Поиск посылки по трек номеру
Отслеживание посылок и писем по трек номеру.
1 стартмани
13.12.2019 8338 4 ranis888 15
"Все функции" с плюшками
Замена штатному меню для тех, кто хочет открывать "Все функции" быстро и кто скучает по быстрому позиционированию по первым символам, как было раньше.
1 стартмани
06.11.2019 9094 26 codejs 6
Ввод склонений представлений объектов
Обработка предназначена для ручного ввода кэша склонений объектов. Данные хранятся в стандартном РС БСП.
1 стартмани
16.10.2019 4075 0 an-oleg82 0
Узнать тип субконто - возвращает значение в текстовом виде
Определение типа субконто по указанному счету и номеру субконто. Возвращает значение в текстовом виде. Например: для счета 41.01 и субконто 1 вернет Справочник.Номенклатура
1 стартмани
30.08.2019 5324 1 ah7777777 2
Размещение текста в ячейке табличного документа
Набор процедур и функций для подбора такого максимального размера шрифта ячейки табличного документа, при котором текст целиком помещается в ячейке. Последний раз обработка успешно протестирована на релизе 1С:Предприятие 8.3, учебная версия (8.3.8.1933).
1 стартмани
29.08.2019 10162 6 user847462 2
Получение описания (расшифровки) параметров (настроек) торговых конфигураций 1С: Розница, УНФ и УТ
Внешние обработки, которые позволяют вывести названия параметров (настроек) и их описание (расшифровку) по разделам каждой из конфигураций: 1С:Розница (ред. 2.2), 1С:Управление нашей фирмой (ред. 1.6), 1С:Управление торговлей (ред. 11).
1 стартмани
29.08.2019 4945 1 delta 0
Универсальный журнал с "галочками"
Бывает необходимость реализовать какой-либо признак для документа. Например, у бухгалтерии часто возникает желание видеть наличие физических документов. Такой признак можно, конечно, добавить в конфигурации в качестве реквизита, доработать формы, т.е. без программиста не обойтись. а что если пришли оригиналы документов из закрытого периода? Открывать период? Сбивать последовательность документов? - неудобно - удобнее сделать это через свойства или категории, подключенные к документу. Но как смотреть есть галочка или нет - заходить в каждый документ, открывать список категорий или свойств - неудобно. надо дописать стандартный журнал и опять без программиста не обойтись. а что если нельзя дорабатывать конфигурацию? Тогда на выручку придет универсальный журнал с галочками!
1 стартмани
27.06.2019 3685 7 sanches2 2
Просмотр всех констант
Внешняя обработка для просмотра значений констант (любая конфигурация, обычные и управляемые формы).
1 стартмани
15.05.2019 6219 26 spartak_ss_88 13
Универсальная печатная форма "Анализ объекта" + шаблон подключаемой обработки для 1С на управляемых формах + отладка внешней печатной формы.
Универсальная печатная форма для всех программ на управляемых формах. Результат печати содержит все реквизиты и табличные части любого документа или справочника (имя + синоним + значение реквизита или поля табличной части), показывает уникальный идентификатор (УИД/GUID) объекта и дату создания (даже справочника!) на основании УИД. Отказоустойчивость кода обработки позволяет ей открываться как в типовых, так и в самописных программах (большинство обычных внешних печатных форм этого не могут). Кроме интерактивного открытия есть возможность подключения к конфигурации. После добавления появится команда печати почти во всех документах и справочниках. Автоматически определяет среду подключения и выбирает доступный вариант вывода: общая форма печати или же отображение табличного документа в новой форме. Все реквизиты объекта получает запросом, а не перебором строк, это делает быстрым выполнение команды.
Оператор цикла Для предназначен для циклического повторения операторов, в конструкции Цикл – КонецЦикла. Условие выполнения цикла всегда проверяется в начале, перед выполнением цикла.
- Переменная является счетчиком и при каждом повторении цикла автоматически увеличивается на 1. Иначе говоря, это счетчик цикла.
- Знач1 число, которое задает начальное значение счетчику цикла.
- Знач2 число, которое задает максимальное значение счетчику цикла. Если значение счетчика цикла становится больше чем Знач2 цикл прекращается.
На данном примере счетчик цикла Сч при каждом входе в цикл увеличится на единицу, и пока не достигнет значению 11, цикл будет продолжаться.
Но, при решении конкретных задач, автоматическое увеличение значения счетчика цикла на единицу не всегда уместно. Так что же делать, ведь это же автоматическая функция?! Но всегда есть выход.
Рассмотрим конкретный пример в котором попробуем счетчику цикла задать шаг ровной к 5-и:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
*Данный пример мы привели во внешней обработке.
Оператор цикла Для Каждого предназначен для циклического обхода коллекций значений. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.
- Переменная: при каждом входе в цикл переменной присваивается значение очередного элемента коллекции.
- КоллекцияЗначений: коллекция значений, элементы которой будут присваиваются переменной Переменная.
Создадим таблицу значений. Как мы помним, делается это на сервере.
И так, мы создали таблицу значений. Вскроем таблицу, для лучшего понимания.
Теперь реализуем обход по коллекции с помощью цикла Для Каждого.
*Данный пример мы привели во внешней обработке.
Создадим еще одну коллекцию. Массив, в отличии от таблиц значений, можно создать на клиенте тоже.
Взглянем на коллекцию:
А теперь реализуем обход по коллекции, с помощью цикла Для Каждого:
Еще один пример, где применим оператор Продолжить:
Индекс | Значение элемента | Тип элемента |
0 | 3 | Число |
1 | 7 | Число |
2 | 8 | Число |
3 | 9 | Число |
Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл – КонецЦикла. Цикл выполняется, пока логическое выражение равно Истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла. (Описание: синтакс-помощник)
Выражение: логическое выражение, в зависимости значения которой будет выполнятся, или не выполнятся цикл.
Взглянем на коллекцию.
Как мы знаем, индексы строк в коллекции начинаются с 0-я. Это прекрасно видно на развернутом виде коллекции.
- МоиЛюбимыеКонфеты.Количество() определяет количество срок в коллекции, что в данном случае рано 4-ом.
- МоиЛюбимыеКонфеты[Сч] определяет элемент коллекции по индексу, где Сч играет роль индекса, и при каждом входе в цикл прибавляется на единицу. Тем самим, мы с каждым разом обращаемся к следующей строке коллекции, начиная со строки с индексом 0. И цикл будет продолжаться, пока значение логического выражение Сч < МоиЛюбимыеКонфеты.Количество() не станет ровному Ложь.
*Данный пример мы привели во внешней обработке.
Но можно получить тот же список, но в обратном порядке. Это называется обратный цикл, хотя на самом деле, этот тот же самый цикл Пока.
Обратимся к тому же массиву, но напишем код обратного цикла.
Поясню, что счет индекса начинается с цифры равному количества строк -1, поскольку индекс последней строки ровно 3-ом. После, в каждом цикле, индекс уменьшается на единицу и тем самим мы обходим коллекцию с обратной стороны.
*Данный пример мы привели во внешней обработке.
Вы думаю заметили, что в нескольких циклах, мы специально показали действие операторов Прервать и Продолжить. Хотя слова сами говорят о себе, да и в циклах вполне понятны их действия, тем не менее в заключении статьи, поясним и действие этих операторов.
- Прервать: прерывает выполнение цикла в любой точке. После выполнение этого оператора цикл прекращается и управление передается следующему оператору, который находиться после ключевого слова КонецЦикла.
- Продолжить: возвращает управление в начало цикла. Операторы, следующие в теле цикла за оператором Продолжить, не выполняются в текущей итерации обхода.
Видео Школы 1С по теме циклов
Читайте также: