Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на платформе 1С Предприятие. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
41
Рекурсия – определение нового значения параметров при помощи старого значения, используя единый идентификатор:
и = 0;
и = и + 1.
Сначала задаем начальное значение выводимой перемен­ной, потом шаг, с которым она будет выходить на экран.
4.4. Работа с процедурами и функциями
Процедура - это идентификатор, выполняющий некоторые действия, определенные пользователем или системные.
Функция - это идентификатор, выполняющий некоторые действия определенные пользователем или системные, и возвра­щающий значение определенного типа.
Функции отличаются от процедур только тем, что возвра­щают определенное значение. Например, функция ТекущаяДата определяет системную дату компьютера и возвращает это значе­ние в виде даты.
В языке программирования 1С разработчик может самостоя­тельно разрабатывать любые процедуры и функции, которые необ­ходимы для выполнения алгоритма программы. Во-первых, можно упростить свой код, если он будет описан с помощью процедур, та­кой код будет хорошо читаем и понятен для следующего разбора. Во-вторых, чтобы не писать много раз одно и то же в коде.
42
Если у вас один и тот же код повторяется несколько раз, то лучше его написать в процедуре или функции, а потом просто использовать данную процедуру или функцию в нужных местах. Синтаксис процедур выглядит следующим образом.
Рассмотрим пример. Вводим два числа, и оба раза вычисля­ется квадратный корень из данных чисел. Если число меньше ну­ля, то пользователю выходит целый ряд сообщений. Вывод этого ряда сообщений мы и создадим в процедуре.
В обработчике кнопки «Выполнить» напишем код. Разбе­рем данный пример. Мы вводим некоторое первое число А, про­веряем на то, что оно введено. Потом мы проверяем больше или равно нуля наше число, если да - то вычисляем корень, если нет ­пишем вновь созданную процедуру, которая выводит целый ряд сообщений. Точно такие же действия проделываем с числом Б.
43
Синтаксис написания функции следующий:
Ключевое слово Функция идет всегда перед названием функции. После параметров идут операторы, которые описывают те или иные действия внутри функции. Основное отличие функ­ции от процедуры в том, что ключевое слово Возврат не только завершает выполнение функции, но и возвращает определенное значение в то выражение, где использовалась данная функция. Ключевое слово КонецФункции завершает код функции. Как и в
44
случае процедуры, все, что написано после данного слова, не бу­дет иметь к вашей функции никакого отношения.
Рассмотрим пример. Напишем функцию Сигнум, парамет­ром которой является некоторое число, и она возвращает 1, если число больше нуля; ноль, если число равно нулю; и -1, если чис­ло меньше нуля.
Изменим обработчик кнопки Выполнить и процедуру КнопкаВыполнитьНажатие.
45
Разберем данный код. Мы создали функцию, которая назы­вается Сигнум, указываем, что у нее только один параметр, назо­вем его ЧислоА. После этого задаем переменную внутри функ­ции, которую мы будем возвращать, назовем ее Сигн. Делаем сравнение, в результате которого Сигн становится равен либо 1, либо нулю, либо -1 . Смотрим основной код в процедуре Кнопка­ВыполнитьНажатие. Первым делом интерактивно вводим неко­торое число А. В следующей строке используем вновь создан­ную функцию: передаем в нее переменную А, а возвращать она будет переменную В. И выводим сообщение.
Еще одной особенностью функций является то, что необя­зательно какой-то переменной присваивать значение функции. Сделаем пример, в котором мы будем вычислять квадратный ко­рень из числа и возвращать значение в виде параметра, а сама функция будет возвращать Истина, если удалось вычислить, и Ложь, если нет. Изменим процедуру кнопки Выполнить.
46
Разберем данный пример. Функция имеет три параметра: название числа под корнем, само число, которое будет под кор­нем, и корень из этого числа. Если число под корнем меньше ну­ля, то мы возвращаем Ложь, соответствующее сообщение и ниче­го не считаем, а если нет - то возвращаем Истина, вычисляем число и выводим соответствующее сообщение.
В основной процедуре мы задаем данную функцию в виде процедуры. Поскольку в этом случае неинтересно, что она вернет, нам важно знать, какое будет число Б. К примеру, мы можем использовать то, что возвращает эта функция для даль­нейшей работы с числом Б, по аналогии как мы используем функцию ВвестиЧисло. Все, что мы изучили касательно парамет­ров на примере процедур, абсолютно справедливо и для функций.
4.5. Экспорт процедур, функций и переменных
Рассмотрим на примере модуля объекта. Создадим новую обработку и напишем в модуле объекта обработки функцию, ко­торая вычисляет квадратный корень модуля какого-нибудь числа.
Для того чтобы обратиться к этой процедуре на форме, не­обходимо сделать функцию экспортной. Осуществляется это по­средством написания слово Экспорт после параметров, функция должна выглядеть следующим образом.
47
Теперь к данной функции можно обращаться из формы об­работки. Для того чтобы посмотреть как это работает, создадим форму для вычисления корня числа, разместив в ней два поля: число под корнем, корень модуля числа и кнопку Вычислить ко­рень.
В обработчике нажатия кнопки Вычислить корень напишем следующий код.
Точно так же можно экспортировать процедуры и функции из общих модулей и модуля приложения.
Нет разницы, где писать процедуру или функцию: в модуле объекта, в общем модуле, модуле приложения или ином другом модуле. Если она не будет экспортной, то данная функция будет доступна только в рамках данного модуля. Ни из какого другого места ее вызвать нельзя. Экспорт переменных осуществляется точно так же, как экспорт функций и процедур: задается пере­менная в начале модуля, и после описания переменной пишется слово Экспорт, после ставится точка с запятой.
48
В обработчике события напишем следующий код.
Задана некая переменная в модуле обработки и потом вывели ее в форме.
4.6. Попытка…Исключение
В ходе выполнения программы могут возникать ошибки, такие как деление на ноль, корень из отрицательного числа и прочие. Эти ошибки можно обойти конструкцией Если...Тогда, но не всегда возможно применить данную конструкцию, чтобы обойти исключительную ситуацию. Поэтому в языке программи­рования 1С существует оператор Попытка…Исключение. Рас­смотрим его синтаксис:
Разберем данный синтаксис. Ключевое слово Попытка от­крывает список операторов, выполнение которых может привести к исключительной ситуации, все операторы между ключевыми словами Попытка и Исключение это Операторы попытки. Клю­чевое слово Исключение открывает список операторов, которые будут выполняться в том случае, если вызвана исключительная ситуация операторами попытки. То есть если во время выполне­ния программы один из операторов попытки вызвал ошибку вы­полнения программы (исключительную ситуацию), то выполне­ние данного оператора прерывается и управление передается на первый Оператор исключения. Причем управление будет переда-
49
но и в том случае, если исключительную ситуацию вызвали функции и процедуры, разработанные программистом и приме­няемые в качестве операторов попытки. Естественно, что если ошибка произошла в процедуре или функции, то ее выполнение будет прервано. Рассмотрим следующий пример.
Разберем данный пример. Как обычно, вводим интерактив­но число, после чего пытаемся вычислить квадратный корень данного числа. Используем ключевые слова Попытка, Исключе­ние, КонецПопытки. Эти ключевые слова всегда должны быть в наличии и представлены в такой очередности как на рисунке. Та­ким образом, в примере вычисление квадратного корня и вывод сообщения являются операторами попытки. Между словом Ис­ключение и КонецПопытки располагаются операторы исключе­ния. На эти операторы перейдет программа после вызова исклю­чения. Операторы попытки, следующие после инициализатора ошибки, в случае ошибки исполняться не будут.
Если все сделано правильно, то никакой ошибки не возни­кает, просто выйдет сообщение о корне из отрицательного числа. А если нам нужно чтобы все-таки ошибка вышла? Для этого есть оператор ВызватьИсключение. Должно выйти следующее окно.
Оператор исключения отработал и вышла ошибка о непра­вильном параметре. Оператор ВызватьИсключение особенно удобно использовать на этапе отладки, когда исключительная
50
ситуация может сложиться в различных случаях и необходимо точно знать, где она произошла.
5. Объектные типы
5.1. Объекты метаданных
Всего в платформе 1С 8 можно выделить несколько видов объектов (рис. 6) – это объекты конфигурации (или объекты ме­таданных, прикладные объекты), общие объекты и универсаль­ные коллекции значений.
Рис. 6
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]