Изменение значений переменных

Теперь вы умеете создавать переменные и помещать в них значения. Познакомьтесь с тем, как можно изменять значения переменных.

Редко бывает так, что программист создал переменную, поместил в нее какое-то значение, а дальше только пользуется этим значением. Чаще бывает по-другому.

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

Изменить значение переменной очень просто. Нужно снова написать инструкцию присваивания.

Например, в переменной МойВозраст находится значение 25. Чтобы изменить значение этой переменной, напишите еще одну инструкцию (рис. 3.37) и поставьте на ней точку останова.

Изменение значений переменных - student2.ru

Рис. 3.37. Вторая инструкция присваивания

Запустите «1С:Предприятие» в режиме отладки и посмотрите, как будет изменяться значение переменной МойВозраст.

Сначала оно будет равно 25. Когда вы сделаете один шаг (F11), вторая инструкция выполнится, и значение переменной станет 30 (рис. 3.38).

Изменение значений переменных - student2.ru

Рис. 3.38. Результат выполнения второй инструкции присваивания

На этой картинке хорошо видно, что одинаковые на первый взгляд инструкции имеют совершенно разный смысл.

Первая инструкция присваивания создает переменную МойВозраст и помещает туда значение 25.

Вторая инструкция присваивания ничего не создает. В ту переменную, которая уже существует, она помещает значение 30.

Контекстная подсказка

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

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

Попробуйте написать еще одну инструкцию присваивания, но уже используя контекстную подсказку. В переменную МойВозраст нужно поместить значение 12.

В новой строке напишите начало имени вашей переменной «Мо» и вызовите контекстную подсказку. Для этого нужно нажать сочетание клавиш Ctrl + Пробел (рис. 3.39).

Изменение значений переменных - student2.ru

Рис. 3.39. Контекстная подсказка

Список контекстной подсказки будет содержать все, что платформа «знает». Все, что вы можете использовать в этом месте без каких-либо дополнительных «объяснений». Причем этот список отсортирован по алфавиту, и в нем выделена первая строка, которая соответствует тем символам, которые вы начали набирать, – «Мо».

Строчкой ниже находится ваша переменная МойВозраст. Платформа тоже «знает» ее, потому что эту переменную вы создали парой строк выше.

Вы можете нажать мышью на строку МойВозраст, и она подставится в текст программы. Или вы можете перейти к ней с помощью курсора и затем нажать Ввод на клавиатуре. Попробуйте.

Также вы можете не искать «глазами» нужную строчку в этом списке. А уже после того, как окно контекстной подсказки открыто, вы можете продолжать набирать имя переменной на клавиатуре. Набрать символ «й». И тогда будет выделена строка МойВозраст (рис. 3.40), потому что других подходящих строк больше нет.

Изменение значений переменных - student2.ru

Рис. 3.40. Контекстная подсказка подбирает нужную переменную

Вам останется только нажать клавишу Ввод, и МойВозраст подставится в текст программы. Попробуйте.

Есть еще более интересный способ. Например, вы точно знаете, а со временем вы будете это знать, что с букв «Мой» начинается только нужная вам переменная – и больше ничего. Тогда вы можете написать эти буквы (рис. 3.41) и вызвать контекстную подсказку.

Изменение значений переменных - student2.ru

Рис. 3.41. Момент, в который нужно вызвать контекстную подсказку

В этом случае у платформы выбора не будет. Поскольку в этом месте есть единственная известная ей переменная, которая начинается на «мой». Тогда платформа не будет предлагать вам ничего выбрать, а сразу же подставит имя переменной в текст программы (рис. 3.42). Попробуйте.

Изменение значений переменных - student2.ru

Рис. 3.42. Контекстная подсказка сразу подставит имя переменной

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

На рис. 3.41 видно и еще один инструмент, который поможет вам не допускать ошибок. Это выделение текущих идентификаторов. Эту возможность, если вы помните, вы включили в настройках конфигуратора в самом начале нашей книге.

Сейчас у вас текущие идентификаторы выделяются желтым цветом. Текущий идентификатор – это имя, которое находится в данный момент под курсором.

Например, вы не пользуетесь контекстной подсказкой. Или вы исправляете имя какой-то переменной. В этих случаях от ошибок вас подстрахует подсветка текущих идентификаторов.

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

А если вы ошиблись в имени переменной, вы увидите вот такую картинку (рис. 3.43).

Изменение значений переменных - student2.ru

Рис. 3.43. Ошибка в имени переменной

Изменение значений переменных - student2.ru Когда вы пишете имена переменных, обращайте внимание на то, что подсвечивается в модуле. Если вы хотите использовать одну из переменных, которые уже есть в модуле, и после написания ее имени она не подсветилась в остальных местах, значит, вы допустили ошибку. Проверьте, что вы написали.

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

Чтобы было удобнее, отредактируйте текст так, как показано на рис. 3.44. Удалите последнюю строку и добавьте пустую строку между инструкциями.

Изменение значений переменных - student2.ru

Рис. 3.44. Как отредактировать модуль

Теперь перед первой инструкцией присваивания напишите «мо» и вызовите контекстную подсказку (рис. 3.45).

Изменение значений переменных - student2.ru

Рис. 3.45. Контекстная подсказка до описания переменной

Посмотрите, в списке контекстной подсказки нет вашей переменной МойВозраст. Потому что в этом месте она еще не описана. Только в следующей строке платформа узнает, что вы хотите использовать такую переменную.

А теперь напишите «мо» между инструкциями присваивания и вызовите контекстную подсказку (рис. 3.46).

Изменение значений переменных - student2.ru

Рис. 3.46. Контекстная подсказка после определения переменной

А в этом месте платформа уже знает, что есть такая переменная МойВозраст. Потому что она описана строчкой выше. И значит, инструкции присваивания, которые идут дальше, могут изменять ее значение.

Изменение значений переменных - student2.ru Подробнее Подробнее вы можете прочитать про сочетания клавиш для работы с текстом программ во встроенной справке (командная панель сверху): Справка – Содержание справки – Сочетания клавиш (Конфигуратор) – Редактор текстовых документов и модулей.

Выбор имени для переменной

Важно, чтобы имя переменной, которую вы хотите создать, не совпало с тем, что платформа уже знает в этом месте модуля. А как узнать, что знает платформа? Правильно! Вызвать контекстную подсказку.

Попробуйте сделать такой пример (рис. 3.47).

Изменение значений переменных - student2.ru

Рис. 3.47. Неправильный выбор имени переменной

Запустите «1С:Предприятие» в режиме отладки. Вы увидите сообщение об ошибке (рис. 3.48).

Изменение значений переменных - student2.ru

Рис. 3.48. Сообщение об ошибке

Так получилось потому, что имя РазмерКартинки платформа уже использует в этом месте. Своей инструкцией присваивания вы попытались изменить его значение. Но сделать это невозможно. О чем платформа вам и сказала.

Чтобы обезопасить себя от подобных ошибок, поступайте следующим образом. Когда вы пишете инструкцию присваивания, которая создает новую переменную, пользуйтесь контекстной подсказкой (рис 3.49).

Изменение значений переменных - student2.ru

Рис. 3.49. Контекстная подсказка при вводе имени переменной

Наберите первые буквы вашей переменной, откройте контекстную подсказку и продолжайте вводить имя переменной. Если оно случайно совпадет с чем-то, что платформе уже известно, вы тут же об этом узнаете.

Изменение значений переменных - student2.ru Совет Если в процессе выполнения самостоятельных примеров у вас возникнет ошибка, посмотрите в этом разделе, как прочитать сообщение об ошибке и как исправить ошибку.
Изменение значений переменных - student2.ru 3.1. Задание простое Все задания выполняйте в модуле управляемого приложения, в процедуре ПриНачалеРаботыСистемы(). После того как закончите, удалите их из модуля, чтобы они не мешали вам в дальнейшем. Создайте переменную МойРост. Запишите в нее свой рост. Затем измените значение этой переменной на тот рост, который будет у вас, например, через год. Запустите «1С:Предприятие» в режиме отладки и посмотрите, как будет изменяться значение этой переменной.
Изменение значений переменных - student2.ru 3.2. Задание сложное Создайте переменную, в которой будет храниться ваше имя. Посмотрите значение этой переменной в режиме отладки.
Изменение значений переменных - student2.ru 3.3. Задание сложное Создайте переменную, в которой будет храниться домашний адрес. Ваш домашний адрес или адрес другого человека – это не важно. Запишите в нее свой адрес.
Изменение значений переменных - student2.ru 3.4. Задание сложное Выберите любой учебный день. Создайте две переменные. В одной будет храниться название первого урока в этот день, в другой – название второго урока.
Изменение значений переменных - student2.ru 3.5. Задание сложное Создайте переменную, в которой будет храниться телефонный номер. Ваш номер или любого другого человека – это не важно. Запишите в нее свой телефонный номер.
Изменение значений переменных - student2.ru 3.6. Задание сложное Создайте переменную, в которой будет храниться оценка, полученная на уроке. На одном уроке вы получили пятерку, на другом уроке – четыре с плюсом. Запишите это в программе. Посмотрите в режиме отладки, как будет изменяться значение этой переменной.

Выражение

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

<Имя переменной> = <Выражение>;

Теперь наша задача – понять, что это за «выражение», которое находится справа от знака равенства. В этом вам поможет инструкция присваивания, которую вы уже видели (рис. 3.50):

Изменение значений переменных - student2.ru

Рис. 3.50. Пример инструкции присваивания

Выражение – это математическая, или логическая, или строковая формула, по которой вычисляется значение. В примере это 6 * 5.

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

Самое простое выражение может не содержать ни одной операции, а только значение. Такой пример вы уже писали (рис. 3.51).

Изменение значений переменных - student2.ru

Рис. 3.51. Пример самого простого выражения

В этом примере значение – это 25, то есть литерал типа Число.

В выражениях можно использовать не только литералы, но и переменные. Например, вы можете взять пример на рис. 3.50 и изменить его так, чтобы умножались не два числа, а две переменные (рис. 3.52).

Изменение значений переменных - student2.ru

Рис. 3.52. Выражение с двумя переменными

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

Изменение значений переменных - student2.ru СОВЕТ Сразу возьмите себе за правило ставить пробелы перед знаками операций (+, -, *, / ) и после них. Тогда текст программы будет читаться легко.

Установите точку останова в первой строке примера и пройдите его по шагам в режиме отладки. Посмотрите, как меняются значения переменных.

Теперь вспомните картинку с экскаватором (рис. 3.53).

Изменение значений переменных - student2.ru

Рис. 3.53. Знак равенства работает как экскаватор

Сначала он собирает своим ковшом то, что справа, и только после этого кладет это в переменную, которая написана слева.

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

В последнем примере поставьте точку останова на третьей строке и запустите отладку (рис. 3.54).

Изменение значений переменных - student2.ru

Рис. 3.54. Выделите выражение

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

Теперь с помощью мыши выделите все выражение, которое находится справа от знака равенства. И нажмите сочетание клавиш Shift + F9. Откроется окно вычисления выражений (рис. 3.55).

Изменение значений переменных - student2.ru

Рис. 3.55. Окно вычисления выражений

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

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

Попробуйте сделать такой пример. Сначала в переменную запишите свой возраст. А теперь представьте, что прошел один год и в следующей строке вам нужно записать в эту переменную свой возраст через год. Как вы это сделаете?

Ответ находится на следующем рисунке (рис. 3.56). Если у вас получилось то же самое – замечательно! Если нет – не расстраивайтесь, скопируйте пример к себе в конфигурацию.

Изменение значений переменных - student2.ru

Рис. 3.56. Вы стали на год взрослее

На первый взгляд такая «конструкция» кажется странной. Но только не для компьютера.

Установите точку останова на второй строке примера и в режиме отладки посмотрите, как изменится значение переменной МойВозраст. Сначала в ней будет значение 20. А после выполнения второй строки значение изменится на 21.

Изменение значений переменных - student2.ru Подробнее Подробнее вы можете прочитать про сочетания клавиш для работы с отладчиком во встроенной справке (командная панель сверху): Справка – Содержание справки – Сочетания клавиш (Конфигуратор) – Отладчик.
Изменение значений переменных - student2.ru 3.7. Задание простое В одной переменной сохраните вашу среднюю скорость – 5 км/ч. В другой переменной сохраните расстояние до школы – 6 км. В третьей переменной посчитайте количество минут, которое вам понадобится, чтобы дойти до школы.
Изменение значений переменных - student2.ru 3.8. Задание сложное Используйте среднюю скорость и расстояние до школы из задания 3.7. В третьей переменной посчитайте, сколько раз за сутки вы сможете дойти до школы и вернуться обратно, если не будете останавливаться и спать. После этого с помощью вычисления выражения посмотрите, сколько километров вы можете пройти за сутки.
Изменение значений переменных - student2.ru 3.9. Задание сложное В этом же примере (3.8) посчитайте, сколько раз вы сможете сделать то же самое, если будете ехать на велосипеде только в светлое время суток. Средняя скорость велосипедиста – 15 км/ч. Светлое время суток длится в среднем 13 часов.
Изменение значений переменных - student2.ru 3.10. Задание сложное В вашем портфеле были только учебники. В понедельник, чтобы перекусить в школе, вы взяли из дома 2 яблока. Но не стали их есть, и они остались в портфеле. Во вторник и в среду вы тоже брали яблоки из дома и оставляли их в портфеле. Сколько яблок будет в вашем портфеле в среду, если каждый день вы брали из дома на два яблока больше, чем в предыдущий? Для решения этой задачи используйте две переменные: ВПортфеле (количество яблок в портфеле) и ВзялИзДома (количество яблок, которое вы взяли из дома).

Арифметические операции

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

Например, если ваши значения имеют тип Число, то с ними можно выполнять арифметические операции: сложение, вычитание, умножение и деление. Эти операции вам хорошо известны. Единственное, что может вызвать трудность, это каким знаком обозначать умножение и деление.

Но и это вы уже знаете. Умножение обозначается знаком звездочка «*», а деление – знаком косая черта «/».

Изменение значений переменных - student2.ru Подробнее Есть и другие арифметические операции. Подробнее вы можете прочитать про них в документации «Руководство разработчика 8.3. Раздел 4.5.1. "Арифметические операции"».

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

Во встроенном языке то же самое:

  • если в выражении есть скобки, то сначала вычисляется то, что в скобках;
  • если скобок нет, то в первую очередь выполняются операции умножения и деления в том порядке, в котором они написаны;
  • в самую последнюю очередь выполняются операции сложения и вычитания (в том порядке, в котором они написаны).
Изменение значений переменных - student2.ru 3.11. Задание простое Создайте четыре переменные:
  • ДлинаУрока – 45 минут;
  • ДлинаПеремены – 15 минут;
  • ДлинаБольшойПеремены – 25 минут;
  • ВсегоУроков – 6.
Посчитайте, сколько минут вы проводите в школе в течение дня, если одна из перемен между уроками всегда большая.
Изменение значений переменных - student2.ru 3.12. Задание сложное Лестницы в многоэтажных домах обычно устроены следующим образом (рис. 3.57). Изменение значений переменных - student2.ru Рис. 3.57. Лестница в многоэтажном доме Чтобы подняться с этажа на этаж, нужно пройти два лестничных марша. Еще несколько ступеней есть перед входом в подъезд. Сколько ступеней нужно пройти, чтобы подняться на ваш этаж? Предусмотрите, что у разных людей в разных домах следующие величины могут быть разными. Перед вычислением сохраните эти значения в отдельных переменных:
  • количество ступеней перед входом в подъезд;
  • количество ступеней в марше;
  • этаж.

Операции со строками

Если ваши значения имеют тип Строка, то они тоже могут участвовать в выражении. Но операций, которые часто используются при работе со строками, всего лишь две. Одну из них вы сейчас и рассмотрите.

Эта операция заключается в том, чтобы к одной строке дописать другую строку. Называется она сложным словом конкатенация, а обозначается знаком «+».

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

Чтобы проверить себя, можете посмотреть на рисунок 3.58.

Изменение значений переменных - student2.ru

Рис. 3.58. Пример конкатенации строк

Установите точку останова на строке КонецПроцедуры и в режиме отладки посмотрите, какое значение получилось в переменной Адрес.

Вы увидите, что две строки действительно «склеились» и получилась строка КрасноярскЦветочная.

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

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

В вашем примере хотелось бы вместо КрасноярскЦветочная видеть Красноярск, Цветочная. Чтобы добиться такого результата, измените последнюю строку так, как показано на рисунке 3.59.

Изменение значений переменных - student2.ru

Рис. 3.59. Использование литерала для разделения строк

Запустите этот пример в режиме отладки и посмотрите, какой получается результат.

Изменение значений переменных - student2.ru ПОДРОБНЕЕ Подробнее вы можете прочитать про операцию конкатенации в документации «Руководство разработчика 8.3. Раздел 4.5.2. "Операция конкатенации"».
Изменение значений переменных - student2.ru 3.13. Задание простое Используя переменную Возраст типа Строка, запишите фразу «Мой возраст 21 год».
Изменение значений переменных - student2.ru 3.14. Задание сложное При отправке почтовых сообщений существует определенный порядок перечисления реквизитов адреса: 1. Название улицы, номер дома, номер квартиры. 2. Название населенного пункта (города, поселка и т. п.). 3. Название района. 4. Название республики, края, области, автономного округа (области). Используя переменные Улица, НомерДома, НомерКвартиры, Город и Область, запишите адрес, выделенный на рисунке 3.60. Изменение значений переменных - student2.ru Рис. 3.60. Адрес отправителя

Наши рекомендации