Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на платформе 1С Предприятие. Учебное пособие
.pdf
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
