Переименуем название информационной базы созданного приложения:
Открываем своё прикладное решение в конфигураторе, в корне конфигурации вызываем контекстное меню. Выполняем команду Открыть модуль приложения:
Конфигуратор открывает пустой модуль управляемого приложения. В поле выбора процедуры нажимаем кнопку выпадающего списка, выбираем строку <ПриНачалеРаботыСистемы>:
В модуле появится заготовка процедуры:
Вместо текста // Вставить содержимое обработчика напишите следующую команду:
УстановитьКраткийЗаголовокПриложения("Фамилия Имя");
Запустите свою конфигурацию в режиме отладки и посмотрите на заголовок приложения:
Любое прикладное решение 1С:Предприятия имеет совершенно определённый жизненный цикл. Прикладное решение запускается. Открывается основной раздел. После этого прикладное решение ждёт действий пользователя. Пользователь может открыть какую-то форму, изменить в ней какие-то данные, закрыть форму. В конце пользователь решает, что сделал всё, что хотел, тогда он закрывает программу и работа прикладного решения завершается.
Этот жизненный цикл фиксирован, он определён платформой, и изменить его нельзя, но в нём есть отдельные моменты, в которые может вмешаться программист. Один из таких моментов только что был осуществлен, по инструкции выше прикладное решение выполнило команду программиста и изменился заголовок приложения.
Такие моменты, когда можно вмешаться в «жизнь» прикладного решения, называются события. Набор этих событий фиксирован, постоянен. Его определяет платформа. Придумать какое-то своё событие не возможно, но можно использовать любое событие из тех, которые имеются.
Когда прикладное решение запускается и начинает работать, происходят два события, в которые можно вмешаться. Первое называется ПередНачаломРаботыСистемы, а второе называется ПриНачалеРаботыСистемы. Слова «перед» и «при» встречаются во многих событиях 1С:Предприятия.
Слово «перед» обозначает тот момент, когда действие ещё не наступило. То есть когда система ещё не начала работать.
Слово «при» означает именно тот момент, когда действие уже выполняется. Когда система уже начинает работать.
Когда устанавливали заголовок приложения, то вмешались в одно из этих событий - в событие ПриНачалеРаботыСистемы. На этом событии программа выполняла команду.
«УстановитьКраткийЗаголовокПриложения» — это нечто, что платформе известно. Нечто, что она умеет и может делать без дополнительных объяснений. Поэтому она раскрашивает это синим цветом.
Синим цветом платформа выделяет то, что ей известно. То, что она знает и умеет выполнять.
Красным цветом платформа выделяет то, что является обязательным. То, что обязательно должно быть в этой инструкции. То, без чего инструкция будет неправильной.
Красным цветом платформа раскрашивает те символы и слова, которые являются обязательными. Без которых не получится правильная инструкция, правильное предложение. Например, красным цветом она раскрашивает символ «точка с запятой», который находится в конце строки. Потому что каждая инструкция обязательно должна заканчиваться этим символом. Так же как в русском языке каждое предложение должно заканчиваться точкой.
По этой же причине платформа раскрашивает красным цветом скобки в первой строке. Платформа знает, что такое «УстановитьКраткийЗаголовокПриложения». Но также она знает, что после этого обязательно должен быть указан сам заголовок, который нужно установить. Этот заголовок она будет искать внутри скобок, которые обязательно должны быть в такой инструкции.
Чёрным цветом платформа выделяет значение. Значение, которое вы написали прямо в тексте программы. Такие значения, написанные прямо в тексте программы, называются литералами.
Если значение, которое вы хотите написать в тексте программы, имеет тип Число, то вы пишете его так, как вы обычно привыкли. Между цифрами не ставите пробелов, а вот дробную часть отделяете от целой части с помощью точки, а не с помощью запятой. Литералы типа Число могут выглядеть так:
395
2016
3.14 29748.0021
Если значение, которое вы хотите написать, имеет тип Строка, то эту строку вы обязательно должны заключить в прямые двойные «"» кавычки. Литералы типа Строка могут выглядеть так:
"Иванов Сергей Николаевич"
" сегодня 1 апреля 2016 года"
"если я дочитаю до конца, я стану крутым программистом "
В начале и в конце строкового литерала могут находиться пробелы и для этого также есть смысл.
Инструкции
Во встроенном языке нельзя писать какие угодно инструкции. Существует всего лишь 5 основных инструкций, которые применяются наиболее часто.
Это:
• инструкция присваивания;
• инструкция Если;
• инструкция вызова процедуры;
• инструкция Цикл;
• инструкция Попытка.
Изучите первые четыре хватает для большинства задач. На самом деле во встроенном языке есть ещё несколько инструкций, но используются они крайне редко.
Инструкция, которую вы написали в модуле управляемого приложения - это инструкция вызова процедуры:
УстановитьКраткийЗаголовокПриложения("Фамилия Имя");
Инструкция присваивания
Самая простая и самая популярная инструкция во встроенном языке — это инструкция присваивания.
КоличествоЗанятий = 6 * 5;
Почему количество занятий равно 6 умножить на 5? Потому что, например, каждый день у вас по 6 занятий и вы занимаетесь 5 дней в неделю.
Отличительным признаком инструкции присваивания является знак равенства «=». Это обязательный символ в этой инструкции. Поэтому платформа выделяет его красным цветом.
Есть два случая, когда используется инструкция присваивания.
Во-первых, для того чтобы получить (вычислить) какое-то значение и использовать его в другом месте. В этом случае схематически инструкция выглядит так:
<Имя переменной> = <Выражение>;
Слева находится имя переменной, а справа — некоторое выражение.
Во-вторых, инструкция присваивания используется тогда, когда значение, которое вы получите или вычислите, нужно вам прямо тут, прямо в этом месте. Тогда схематически инструкция выглядит так:
<Имя свойства> = <Выражение>;
Слева находится имя свойства, а справа — снова какое-то выражение. Справа от знака равенства находится непонятное для вас пока «выражение». А слева — тоже непонятная пока для вас «переменная». Сначала познакомимся с переменными.
Переменная — это специальное место в памяти компьютера. В этом месте можно сохранить одно значение на то время, пока выполняется программа. Переменных может быть сколько угодно, пока у компьютера не закончится оперативная память. Переменные существуют не всегда, а только в то время, пока выполняется программа. Поэтому, когда программа перестанет выполняться, все переменные исчезнут.
Для того чтобы создать переменную, вам не нужно ничего делать. Нужно только придумать для неё имя и написать это имя слева от знака равенства в инструкции присваивания. Когда компьютер начнёт выполнять вашу программу, он сам создаст переменную и поместит в неё значение, которое вы написали справа от знака равенства. Листинг "Мой возраст":
МойВозраст = 25;
Переменная "МойВозраст"
В компьютере у вас должно получиться примерно то же самое, что в листинге.
Сразу возьмите себе за правило ставить пробелы перед знаком «=» и после него. Тогда текст программы будет читаться легко.
Имя должно начинаться с буквы и не должно содержать пробелов. Если хочется составить имя из нескольких слов, каждое следующее слово принято писать с большой буквы. Буква «ё» в именах не используется, вместо неё надо писать букву «е».
Придумывайте такие имена, чтобы они были понятны и вам, и другому человеку. Не стесняйтесь использовать несколько слов для составления имени. Два, три слова — это нормально.
Когда имя очень короткое или оно является каким-то сокращением, другому человеку будет трудно понять, что вы имели в виду. Да и вы, если посмотрите на свою программу через несколько месяцев, с трудом вспомните, что вы хотели сказать таким именем. Вот, например, плохие имена: «доб», «стро», «квоТТ».
Очень длинное имя — это тоже нехорошо. Например, «ДеньгиНалИБезНалМеждуНамиИКонтрагентами». Использовать такую переменную в каких-нибудь формулах будет очень неудобно.
Стараемся быть краткими и в то же время понятными.
Точки останова и просмотр значений
Никаких особенных действий, чтобы воспользоваться отладчиком, производить не нужно. Почти всё вам уже известно. Единственное, чего вы пока не знаете, это как сказать программе, чтобы она остановилась в нужном месте.
Для этого используются точки останова. Точка останова — это специальная отметка. Она показывает, перед выполнением какой инструкции платформа должна остановиться и ждать дальнейших команд от вас.
Чтобы установить точку останова, нужно дважды щёлкнуть мышью на серой полосе слева. В той строке, перед выполнением которой нужно остановиться.
Если на точке останова снова дважды щёлкнуть мышью, то точка останова пропадёт.
Но прежде чем установить точку останова, нужно сохранить те изменения, которые вы сделали в модуле. Для этого в командной панели наверху нажмите кнопку Обновить конфигурацию базы данных.
Запустить 1С:Предприятие в режиме отладки. В результате не увидим привычного интерфейса программы. Как только платформа дойдёт до выполнения инструкции, которую отметили, остановится и переключится в конфигуратор. Вы увидите такую картинку:
Жёлтая стрелка на серой полосе слева показывает, какую инструкцию платформа приготовилась выполнять. То есть сейчас она приготовилась выполнять инструкцию присваивания, которую вы написали.
Как посмотреть значение переменной МойВозраст? Для этого есть несколько способов. Первый и самый простой — открыть окно Локальные переменные. В этом окне отладчик автоматически покажет все переменные (и их значения), которые доступны в данный момент.
Чтобы открыть это окно, в командной панели наверху нажмите кнопку Локальные переменные. Для открытия этой кнопки используем две стрелки вправо:
Для возможности использования кнопки "Локальные переменные" перетаскиваем всю панель влево:
Окно Локальные переменные появится на экране.
В нём будет единственная переменная МойВозраст:
Это окно устроено очень просто. Каждая переменная в нём занимает одну строку. В первой колонке показано имя переменной.
Во второй колонке — её значение. Пока у переменной МойВозраст нет никакого значения, поэтому во второй колонке пусто.
В третьей колонке — тип этой переменной. Вы пока ничего не помещали в переменную МойВозраст, поэтому платформа не знает, какой тип у этой переменной. В таких случаях она пишет Неопределено.
Теперь нужно сказать платформе, чтобы она выполнила вашу инструкцию. Ту, перед которой она остановилась.
Для выполнения программы по одному шагу (или по нескольким шагам сразу) есть ряд кнопок. Они расположены в командной панели наверху:
Первая из них — Шагнуть в — именно та, что вам нужна. Она используется чаще всего. Если подвести к ней указатель мыши и подержать, то появится подсказка. В подсказке написано, какой клавишей можно сделать то же самое действие, — F11.
Нажмите F11 на клавиатуре. Это самый простой и удобный способ, которым пользуются программисты. Платформа выполнит одну инструкцию и остановится перед выполнением следующей:
Строка, перед выполнением которой платформа остановилась, опять отмечена жёлтой стрелкой. То есть ваша инструкция присвоения выполнилась.
Это действительно так, потому что в окне Локальные переменные у вашей переменной появились значение 25 и тип Число.
Есть и другой способ посмотреть значение переменной. Вы можете просто подвести курсор мыши к тому месту программы, где написано имя переменной. И подержать немного. Появится подсказка, в которой будет написано значение переменной:
После того как вы посмотрели всё, что вам нужно в конфигураторе, вы можете сказать платформе, чтобы она завершила отладку. Для этого выполните команду Отладка — Завершить:
Выполняя дальнейшие примеры будем придерживаться последовательности действий:
• Вносить изменения в модуль (писать новую команду или изменять старую);
• Если будем ставить точку останова на той строке, которую только что ввели, то обновляем конфигурацию базы данных и устанавливаем точку останова (если точка останова уже стоит в той строке, которая нужна, то ничего не делаем);
• Запускаем 1С:Предприятие в режиме отладки;
• После просмотра интересующих значений, завершаем отладку.
Совет: когда в очередной раз решим посмотреть значение какой-нибудь переменной, то запускаем 1С:Предприятие в режиме отладки (желтый кружок с синей стрелкой). Если запускать приложение как обычный пользователь (нажимаем "1С:Предприятие", а не "Конфигуратор"), без отладки в режиме Конфигуратора, то платформа не будет обращать внимания на точки останова.
Подробнее прочитать про сочетания клавиш для работы с отладчиком во встроенной справке (командная панель сверху): Справка — Содержание справки — Сочетания клавиш (Конфигуратор) — Отладчик:
Изменение значений переменных
Теперь умеем создавать переменные и помещать в них значения, которые можно изменять, так как редко бывает так, что программист создал переменную, поместил в неё какое-то значение, а дальше только пользуется этим значением. Чаще программист создает переменную, помещает в неё значение, использует и помещает в неё другое значение и так далее. Изменить значение переменной очень просто. Нужно снова написать инструкцию присваивания.
Например, в переменной МойВозраст находится значение 25. Чтобы изменить значение этой переменной, напишите ещё одну инструкцию и поставьте на ней точку останова:
Запустите 1С:Предприятие в режиме отладки и посмотрите, как будет изменяться значение переменной МойВозраст: сначала оно будет равно 25, когда вы сделаете один шаг (F11), вторая инструкция выполнится, и значение переменной станет 31:
На этой картинке хорошо видно, что одинаковые на первый взгляд инструкции имеют совершенно разный смысл. Первая инструкция присваивания создаёт переменную МойВозраст и помещает туда значение 25. Вторая инструкция присваивания ничего не создаёт. В ту переменную, которая уже существует, она помещает значение 31.
Контекстная подсказка
Сейчас подходящее время для того, чтобы познакомиться с ещё одним важным инструментом разработчика — контекстной подсказкой, которая значительно упрощает жизнь программиста и позволяет избежать большого количества нелепых ошибок, особенно на первом этапе, когда многие слова во встроенном языке являются новыми и непривычными.
Когда писали вторую инструкцию присваивания, очень важно было не сделать ошибку в имени переменной МойВозраст. Если бы написали «МойВозратс» (случайно переставили местами две последние буквы), то платформа подумала бы, что вы хотите создать новую переменную. И вместо того, чтобы поместить значение 31 в переменную МойВозраст, создала бы новую переменную, и значение 31 поместила бы в неё.
Попробуйте написать ещё одну инструкцию присваивания, но уже используя контекстную подсказку. В переменную МойВозраст нужно поместить значение 12.
В новой строке напишите начало имени вашей переменной «Мо» и вызовите контекстную подсказку. Для этого нужно нажать сочетание клавиш Ctrl+Пробел:
Список контекстной подсказки будет содержать всё, что платформа «знает». Всё, что вы можете использовать в этом месте без каких-либо дополнительных «объяснений». Причём этот список отсортирован по алфавиту, и в нём выделена первая строка, которая соответствует тем символам, которые вы начали набирать, — «Мо».
Строчкой ниже находится ваша переменная МойВозраст. Платформа тоже «знает» её, потому что эту переменную вы создали парой строк выше.
Нажмите мышью на строку МойВозраст, и она подставится в текст программы. Или вы можете перейти к ней с помощью курсора и затем нажать Enter на клавиатуре.
Также можно не искать «глазами» нужную строчку в этом списке. А уже после того, как окно контекстной подсказки открыто, можно продолжать набирать имя переменной на клавиатуре - набрать символ «й». И тогда будет выделена строка МойВозраст, потому что других подходящих строк больше нет:
Останется только нажать клавишу Enter, и МойВозраст подставится в текст программы. Есть ещё более интересный способ. Например, вы точно знаете, а со временем вы будете это знать, что с букв «Мой» начинается только нужная вам переменная — и больше ничего.
Тогда вы можете написать эти буквы и вызвать контекстную подсказку:
В этом случае у платформы выбора не будет. Поскольку в этом месте есть единственная известная ей переменная, которая начинается на «мой». Тогда платформа не будет предлагать вам ничего выбрать, а сразу же подставит имя переменной в текст программы:
Использовать контекстную подсказку удобно, полезно и нужно, так как это помогает избегать орфографических ошибок и значительно экономит время, потому что большинство слов не нужно будет дописывать до конца. Платформа допишет сама.
Также на рисунке "Момент, в который нужно вызвать контекстную подсказку" видно ещё один инструмент, который помогает не допускать ошибок. Это выделение текущих идентификаторов. Эту возможность, если помните, вы включили в настройках конфигуратора в самом начале этого курса.
Сейчас у вас текущие идентификаторы выделяются жёлтым цветом. Текущий идентификатор — это имя, которое находится в данный момент под курсором.
Например, вы не пользуетесь контекстной подсказкой или исправляете имя какой-то переменной. В этих случаях от ошибок Вас подстрахует подсветка текущих идентификаторов.
Использовать её надо следующим образом. Как только вы закончите набирать имя переменной, платформа тут же выделит вашу переменную везде, где она встречается в тексте модуля. Таким образом, если Вы написали имя правильно, вы увидите то, что на рисунке "Контекстная подсказка сразу подставит имя переменной".
А если вы ошиблись в имени переменной, то увидите такую картинку:
Когда пишете имена переменных, обращайте внимание на то, что подсвечивается в модуле. Если хотите использовать одну из переменных, которые уже есть в модуле, и после написания её имени она не подсветилась в остальных местах, значит, допущена ошибка. Проверьте, что написано.
И последний эксперимент, демонстрирующий, что в первой инструкции мы создаём переменную, а во второй присваиваем значение той переменной, которая уже существует.
Чтобы было удобнее, отредактируйте текст так, как показано на рисунке - удалите последнюю строку и добавьте пустую строку между инструкциями:
Теперь перед первой инструкцией присваивания напишите «мо» и вызовите контекстную подсказку:
В списке контекстной подсказки нет переменной МойВозраст. Потому что в этом месте она ещё не описана. Только в следующей строке платформа узнает, что вы хотите использовать такую переменную.
Напишите «мо» между инструкциями присваивания и вызовите контекстную подсказку:
В этом месте платформа уже знает, что есть такая переменная МойВозраст. Потому что она описана строчкой выше. Значит, инструкции присваивания, которые идут дальше, могут изменять её значение.
Про сочетания клавиш для работы с текстом программ во встроенной справке (командная панель сверху): Справка — Содержание справки — Сочетания клавиш (Конфигуратор) — Редактор текстовых документов и модулей:
Выбор имени для переменной
Важно, чтобы имя переменной, которую хотим создать, не совпало с тем, что платформа уже знает в этом месте модуля. Как узнать, что знает платформа?
Вызвать контекстную подсказку. Попробуем сделать такой пример:
Процедура ПриНачалеРаботыСистемы()
УстановитьКраткийЗаголовокПриложения("Иванов Петя");
РазмерКартинки = 30;
КонецПроцедуры
Запускаем 1С:Предприятие в режиме отладки и видим сообщение об ошибке:
Так получилось потому, что имя РазмерКартинки платформа уже использует в этом месте. Своей инструкцией присваивания мы попытались изменить его значение. Но сделать это невозможно. О чём платформа сообщила.
Чтобы обезопасить себя от подобных ошибок, поступаем следующим образом. Когда пишем инструкцию присваивания, которая создаёт новую переменную, пользуемся контекстной подсказкой:
Набираем первые буквы переменной, открываем контекстную подсказку и продолжаем вводить имя переменной. Если оно случайно совпадает с чем-то, что платформе уже известно, тут же об этом узнаем.
Задание 1
Все задания выполняйте в модуле управляемого приложения, в процедуре ПриНачалеРаботыСистемы(). После того как заканчиваем, удаляем их из модуля, чтобы они не мешали в дальнейшем.
Создаем переменную МойВес. Записываем в неё свой вес. Затем меняем значение этой переменной на тот вес, который будет через год.
Запустите 1С:Предприятие в режиме отладки и смотрим, как будет изменяться значение этой переменной:
Задание 2
Создайте переменную, в которой будет храниться ваше имя. Посмотрите значение этой переменной в режиме отладки:
Задание 3
Создайте переменную, в которой будет храниться домашний адрес. Ваш домашний адрес или адрес другого человека. Запишите в неё адрес:
Задание 4
Выберите любой учебный день. Создайте две переменные. В одной будет храниться название первого урока в этот день, в другой — название второго урока.
Задание 5
Создайте переменную, в которой будет храниться телефонный номер. Запишите в неё какой-нибудь телефонный номер.
Задание 6
Создайте переменную, в которой будет храниться оценка, полученная на уроке. На одном уроке вы получили пятёрку, на другом уроке — четыре с плюсом. Запишите это в программе. Посмотрите в режиме отладки, как постепенно будет изменяться тип значение этой переменной:
Одна и та же переменная может хранить значения разных типов. Сначала в ней может находиться число, затем помещаем в неё строку.
Выражение
Теперь знаем, как создавать переменные, придумывать им имена, присваивать значения переменным. Схематически инструкция присваивания выглядит как:
<Имя переменной> = <Выражение>;
Теперь задача — понять, что это за «выражение», которое находится справа от знака равенства. В этом помогает инструкция присваивания, которую использовали ранее
КоличествоЗанятийНеделю = 6 * 5;
Выражение — это математическая или логическая, или строковая формула, по которой вычисляется значение. В примере выше это 6 * 5.
Выражение обычно состоит из одной или нескольких операций. В примере выше одна операция — это операция умножения, которая обозначается знаком звёздочка — «*».
Самое простое выражение может не содержать ни одной операции, а только значение.
Такой пример был:
МойВозраст = 25;
В этом примере значение — это 25, то есть литерал типа Число.
В выражениях можно использовать не только литералы, но и переменные, которые были введены в код программы ранее. Например, можете взять первый пример выше и изменить его так, чтобы умножались не два числа, а две переменные:
При вводе имён переменных в третьей строке используем контекстную подсказку и всегда ставим пробелы перед знаками операций (+, -, *, /) и после них. Тогда текст программы будет читаться легче.
Установим точку останова в первой строке примера и пройдем его по шагам в режиме отладки. Посмотрим, как меняются значения переменных. Для этого в последнем примере ставим точку останова на третьей строке и запускаем отладку:
Обратим внимание, что значение переменной КоличествоЗанятий ещё не определено, так как эта инструкция ещё не выполнялась. Но значения переменных ЗанятийВДень и ДнейВНеделю уже известны.
С помощью мыши выделяем всё выражение, находящееся справа от знака равенства, нажимаем сочетание клавиш Shift+F9, тогда открывается окно вычисления выражений:
В этом окне вы увидите и своё выражение, и значение, которое получится в результате его вычисления. В вашем примере выражение простое. Поэтому кажется, что такая функция не очень-то и нужна. Но в реальных программах выражения могут быть сложными. С помощью этой функции вы легко можете выделить всё выражение (или только его часть) и посмотреть, какое значение получится.
Платформа, так же как и вы, сначала вычисляет выражение, а потом помещает его в переменную слева. Поэтому переменную, которая находится слева от знака равенства, можно использовать в выражении в этой же инструкции присваивания.
Попробуйте сделать такой пример. Сначала в переменную запишите свой возраст. А теперь представьте, что прошёл один год и в следующей строке вам нужно записать в эту переменную свой возраст через год. Как вы это сделаете?
Ответ находится на следующем рисунке (рисунок 3.44). Если у вас получилось то же самое — замечательно! Если нет — не расстраивайтесь, скопируйте пример к себе в конфигурацию:
На первый взгляд такая «конструкция» кажется странной. Но только не для компьютера.
Установите точку останова на второй строке примера и в режиме отладки посмотрите, как изменится значение переменной МойВозраст. Сначала в ней будет значение 20. А после выполнения второй строки значение изменится на 21.
Подробнее
Подробнее вы можете прочитать про сочетания клавиш для работы с отладчиком во встроенной справке (командная панель сверху): Справка — Содержание справки — Сочетания клавиш (Конфигуратор) — Отладчик.
Задание 3.7
В одной переменной сохраните вашу среднюю скорость — 5 км/ч. В другой переменной сохраните расстояние до школы — 6 км. В третьей переменной посчитайте количество минут, которое вам понадобится, чтобы дойти до школы.
Задание 3.8
Используйте среднюю скорость и расстояние до школы из задания 3.7 В третьей переменной посчитайте, сколько раз за сутки вы сможете дойти до школы и вернуться обратно, если не будете останавливаться и спать. После этого с помощью вычисления выражения посмотрите, сколько километров вы можете пройти за сутки.
Задание 3.9
В этом же примере (3.8) посчитайте, сколько раз вы сможете сделать то же самое, если будете ехать на велосипеде только в светлое время суток. Средняя скорость велосипедиста — 15 км/ч. Светлое время суток длится в среднем 13 часов.
Задание 3.10
В вашем портфеле были только учебники. В понедельник, чтобы перекусить в школе, вы взяли из дома 2 яблока. Но не стали их есть, и они остались в портфеле. Во вторник и в среду вы тоже брали яблоки из дома и оставляли их в портфеле. Сколько яблок будет в вашем портфеле в среду, если каждый день вы брали из дома на два яблока больше, чем в предыдущий? Для решения этой задачи используйте две переменные: ВПортфеле (количество яблок в портфеле) и ВзялИзДома (количество яблок, которое вы взяли из дома).