1С Без Воды. Синтаксис языка
Продолжаем изучать синтаксис. Если заскучали то думаю синтаксису мы уделим максимум еще один пост и уже перейдем в конфигуратор.
Объявление переменной
Небольшое замечание про переменные, есть способ создать переменную но при этом не задавать ей значение, такой способ называется объявление переменной и выполняется с помощью ключевого слова Перем. Зачем это может быть нужно сейчас возможно будет трудно понять, но когда мы дойдем до областей видимости (когда перейдем в конфигуратор) тогда мы коснемся этого еще раз.
Условные операторы
Тут все просто как в анекдоте:
Жена отправляет мужа-программиста в магазин: - Купи батон хлеба, если
будут яйца - возьми десяток.
Муж возвращается из магазина с десятью батонами.
- Ты зачем столько хлеба купил?
- Так ведь яйца были...
Если какое-то выражение выдает нам Истину то выполняем одно действие иначе другое действие. Простейшее условие выглядит так:
Не забываем про точку с запятой (хотя все равно по началу будете) в конце каждого выражения.
Другие варианты Если
То есть мы можем выполнить одно выражение (Если) в зависимости от какого-то выражения, либо выбрать из двух выражений (Если Иначе), либо из произвольного количества выражений (Если ИначеЕсли).
Циклы, массивы
Для того чтобы поговорить о циклах давайте немного затронем тему массивов. Массив это просто упорядоченная коллекция переменных. То есть мы создаем переменную с типом массив и через методы массива можем туда добавлять другие переменные (данные) и если нам нужны будут значения этих переменных то мы будем обращаться к номеру массива где эти переменные лежат, такой номер называется индекс в массиве и во многих других коллекциях индекс всегда начинается с 0. Давайте создадим массив и добавим данные. Варианты создания массивов.
Обычно все пользуются вариантом №1. И тут мы уже можем увидеть что у нас повторяются одни и те же действия при добавлении данных, если мы знаем что нам нужно в массив добавить какие-то упорядоченные данные например последовательность чисел то тут нам облегчат жизнь циклы.
Цикл Для.
Начиная от значения Счетчик и по ограничение (10) добавляем в массив значения счетчика, По 10 значит что 10 последнее значение счетчика так же добавится в массив.
Так же как и добавили так же мы можем и прочитать добавленные значения через цикл Для, но здесь уже мы будем использовать доступ через квадратные скобки (индекс) и счетчик будем начинать не с единицы а с нуля, так как нумерация ячеек в массиве идет с нуля.
Небольшое отступление. Кому-то покажется странным запись вида Массив.Количество(). Здесь используется оператор точки. Помните когда мы учили приоритеты операций самый высокий был у точки и у фигурных скобок? Так вот точка это оператор доступа к данным некоего объекта, в нашем случае массива, у примитивных типов такого нет. Через точку мы как бы обращаемся к инструментам объекта или к хранящимся в нем данным.
Здесь мы через цикл для считываем последовательно данные массива, в качестве ограничения у нас выражение Массив.Количество() - 1, почему отнимаем единицу? Например у нас в массиве 10 значений, метод количество значит вернет число 10. То есть на последнем шаге цикла в значении счетчика у нас будет 10. Далее мы считываем это значение через Массив[Счетчик], что равносильно Массив[10], а мы помним что индекс начальной ячейки 0 и не трудно догадаться что индекс последней ячейки будет 9 и мы пытаемся прочитать значение из несуществующей ячейки. Поэтому мы получим ошибку на последнем шаге цикла если не отнимем единицу.
И тут мы можем рассмотреть еще одну вариацию цикла Для, предназначенную для обхода коллекций - Для Каждого. Здесь мы просто без указания индекса можем перебрать все элементы коллекции.
Гораздо проще да? Не надо ничего отнимать и обращаться по индексу, очень популярный цикл.
Ну и напоследок темы циклов рассмотрим цикл Пока. С помощью него удобно сделать бесконечный цикл прерываемый только при наступлении какого-то события. Либо выполнять какие-то действия пока результат проверки равен истине
Здесь у нас новый оператор не равно <> часто используют его но для наглядности можно использовать конструкцию НЕ Счетчик = 0, а так же здесь показан способ уменьшения значения переменной, можно аналогично увеличивать значение только используя знак плюс.
Для тру программистов конструкций инкремента и декремента (++, --) а так же конструкций += и -= в 1с нету. Грустно, знаю.
Еще небольшое отступление, возможно у кого-то возникнет вопрос а почему мы через знак равно который служит для присваивания значения переменной проверяем равенство? Ну вот привыкайте, присваивание и равенство пишутся одинаково, и когда встретите такую конструкцию - Результат = Число1 = Число2 - знайте что в результат присвоится булево, в зависимости от того равно Число1 Числу2 (Истина) или нет (Ложь);
Один момент который касается всех циклов. Существует два ключевых слова - Прервать, Продолжить. Прервать прерывает выполнение цикла в месте вызова. Продолжить перескакивает на следующий шаг.
В первом цикле мы прерываем цикл по достижении значения счетчика 5. Во втором шаге мы пропускаем все шаги где остаток от деления на 2 значения счетчика не равен 0 ( то есть это нечетное число).
Далее нас ждет немного более сложная для понимания тема процедур и функций поэтому вынесу ее в отдельный пост. А после нее уже перейдем к изучению конфигуратора (конфигурирование) и расширения знаний о синтаксисе языка уже в конфигураторе.












