- •Режим отладки
- •Добавление данных
- •Объект данных
- •Объект конфигурации описывает, как будут выглядеть его данные
- •Интерфейс
- •Что такое формы?
- •Представления объекта конфигурации в интерфейсе
- •Наименование и код
- •Реквизиты
- •Командный интерфейс раздела
- •Ввод по строке
- •Добавление формы
- •Редактор формы
- •Изменение формы списка
- •Изменение формы объекта
- •3. Встроенный язык
- •Простые типы Почему текст разноцветный
- •Какие бывают инструкции
- •Инструкция присваивания
- •Переменная
- •Точки останова и просмотр значений
- •Изменение значений переменных
- •Контекстная подсказка
- •Выбор имени для переменной
- •Выражение
- •Арифметические операции
- •Операции со строками
- •Тип «Дата» и операции с датами
- •Тип «Булево» и логические операции
- •Булевы операции
- •Инструкция «Если»
- •Красивая программа
- •Инструкция «Цикл»
- •Функции
- •Контекст и область видимости
- •Процедуры
- •Чтение и отладка процедур и функций
Процедуры
Теперь, когда вы умеете создавать и использовать функции, можно заняться изучением процедур.
Процедуры очень похожи на функции. Есть только одно отличие. Процедура ничего не возвращает. Она просто выполняет инструкции, которые находятся в ее теле.
Во всем остальном процедуры выглядят точно так же, как функции, которые вам уже хорошо известны. Вместо слова Функция используется Процедура, а вместо КонецФункции используется КонецПроцедуры (рис. 3.168).
Рис. 3.168. Пример процедуры
В этом примере у процедуры нет параметров, но если нужно, вы можете их указать так же, как и в функции.
Напишите в своей конфигурации этот пример. Процедура в этом примере проверяет, какой сейчас день недели. Если номер дня недели равен 7 (воскресенье), она выводит на экран напоминание о том, что завтра нужно идти в школу.
Запустите этот пример и посмотрите, как выглядит это напоминание. Но не забывайте, что оно появится только в воскресенье. Если вы читаете книгу не в воскресенье, то вместо 7 напишите номер вашего текущего дня недели.
Оповещение появится в небольшом окне в правой нижней части экрана, а затем постепенно пропадет (рис. 3.169).
Рис. 3.169. Оповещение пользователя
Для вывода такого оповещения вы использовали встроенную процедуру ПоказатьОповещениеПользователя(). Вы о ней ничего не знаете, просто написали так, как было на рисунке. Но наверняка вы хотите узнать, для чего нужна эта процедура и как ею пользоваться.
В этом вам поможет синтакс-помощник. Причем найти в нем эту процедуру очень просто.
Когда в тексте программы вам попадается незнакомая процедура или функция встроенного языка, вы можете просто установить на нее курсор и нажать сочетание клавиш Ctrl + F1. Откроется синтакс-помощник, и в его нижнем окне будет показано описание процедуры или функции (рис. 3.170).
Рис. 3.170. Описание процедуры в синтакс-помощнике
Если вы захотите узнать, какие еще есть похожие процедуры и функции, нажмите кнопку Найти текущий элемент в дереве на командной панели (рис. 3.171).
Рис. 3.171. Кнопка «Найти текущий элемент в дереве»
В верхнем окне синтакс-помощник раскроет дерево и отметит в нем вашу процедуру.
Если вы пролистаете дерево вверх, то увидите, что есть еще большое количество процедур и функций, предназначенных для интерактивной работы. То есть для «общения» с пользователем (рис. 3.172).
Рис. 3.172. Процедуры и функции интерактивной работы
|
3.31. Задание простое Пример из задания 3.29 (см. в этом разделе) преобразуйте в процедуру. Текстовое представление месяца и года переданной даты показывайте пользователю с помощью функции ПоказатьОповещениеПользователя(). |
|
3.32. Задание простое Пример из задания 3.30 (см. в этом разделе) преобразуйте в процедуру. Представление периода показывайте пользователю с помощью функции ПоказатьОповещениеПользователя(). |
Чтение и отладка процедур и функций
Процедуры и функции могут быть расположены в самых разных частях конфигурации. Совсем не обязательно, что определение функции будет находиться где-то рядом с тем местом, откуда она вызывается. Это так только в вашем примере.
Чаще всего вызов функции и ее определение находятся далеко друг от друга. Может быть, даже в разных модулях конфигурации. Как в этом случае быстро найти определение функции, чтобы посмотреть, какие действия она выполняет?
Для этого есть очень удобный способ. Нужно установить курсор на имя процедуры или функции (в том месте, где она вызывается) и нажать клавишу F12.
Попробуйте на своем примере, в том месте, где вы вызываете функцию ПредупредитьОПонедельнике(). Платформа перейдет к определению процедуры и выделит его в тексте (рис. 3.173).
Рис. 3.173. Переход к определению процедуры
Чтобы вернуться назад, нажмите сочетание клавиш Ctrl и символа «-» в основной части клавиатуры. Курсор вернется на ту строку, где находится вызов функции (рис. 3.174).
Рис. 3.174. Возврат к вызову функции
Еще несколько интересных приемов связаны с отладкой процедур и функций. Вы прекрасно умеете выполнять отладку по шагам и используете для этого клавишу F11. Она позволяет вам останавливаться на каждой инструкции, которая исполняется.
Но это не всегда удобно. Бывают случаи, когда хочется выйти из функции раньше, чем закончатся все инструкции, которые в ней выполняются. Бывают случаи, когда не нужно заходить внутрь процедуры, а нужно, чтобы она просто выполнилась, без остановки на каждой инструкции.
Для этого есть еще две команды пошаговой отладки. Чтобы познакомиться с ними, немного модифицируйте пример. Допишите две инструкции присваивания – до и после вызова процедуры. Например, как на рисунке 3.175.
Рис. 3.175. Доработанный пример
Установите точку останова на первой инструкции присваивания. Запустите «1С:Предприятие» в режиме отладки и по одному шагу дойдите до строки Если …
Теперь представьте: вы отлаживаете программу, чтобы найти ошибку. Вы посмотрели на текст функции и поняли, что ошибка не в ней, а где-то дальше. Поэтому нет смысла проходить всю функцию по шагам. Нужно вернуться к тому месту, откуда функция вызывалась.
В этом вам поможет команда Шагнуть из (рис. 3.176).
Рис. 3.176. Команда «Шагнуть из»
В результате выполнения этой команды инструкции, содержащиеся в процедуре, будут исполнены без остановки. А остановка произойдет тогда, когда исполнение вернется к той строке, в которой процедура была вызвана (рис. 3.177). Попробуйте.
Рис. 3.177. Переход к вызову функции
Теперь рассмотрим второй случай. Перезапустите отладку.
Например, вы отлаживаете свою программу и заранее точно знаете, что внутри процедуры ПредупредитьОПонедельнике() все работает правильно и нет никакой необходимости заходить внутрь нее.
Тогда вы можете использовать команду Шагнуть через (рис. 3.178).
Рис. 3.178. Команда «Шагнуть через»
Она позволит вам не заходить внутрь процедуры, а переходить от строки к строке (рис. 3. 179). Попробуйте.
Рис. 3.179. Переход через вызов процедуры
|
ПРИМЕЧАНИЕ Подробнее вы можете прочитать про пошаговое выполнение в документации «Руководство разработчика. Раздел 28.2.4. "Пошаговое выполнение"». |
