Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 2
Автор уроков и преподаватель школы: Владимир Милькин
На прошлом уроке мы начали знакомство с функциями и процедурами в языке 1С 8.3. Так как это действительно важная тема посвятим ей и это занятие.
Функции в 1С 8.3 - продолжение...
Итак, мы уже уяснили, что все программы состоят из команд компьютеру.
А функции - это способ группировки этих команд точно также как, например, папки на компьютере - способ группировки для файлов.
Ещё функцию можно рассматривать как чёрный ящик, внутри которого лежат какие-то команды для компьютера. Чёрный ящик имеет имя. И чтобы заставить компьютер выполнить команды из этого ящика нам нужно указать его имя, например, так:
ЧёрныйЯщик(); |
Как видите, вызов "чёрного ящика" сам по себе является командой. При вызове чёрного ящика - выполнятся все команды, которые находятся внутри него.
Более того один ящик может содержать в себе не только команды, но и другие ящики, точно также как папки могут быть вложенными в другие папки. Ну вы поняли аналогию.
Но чёрные ящики (функции) имеют такую особенность:
- Они могут содержать входные отверстия (одно или несколько) для того, чтобы мы в них могли что-то положить (параметры).
- И они обязательно содержат одно выходное отверстие, из которого мы сможем забрать результат работы ящика.
- Ящик-функция просто обязан вернуть нам хотя бы какой-то результат в выходное отверстие.
Пусть нам нужен ящик, в который мы будем класть два числа, а он будет возвращать их сумму.
- Придумываем имя для этого ящика - "СуммаЧисел".
- Придумываем имена для входных отверстий этого ящика (параметров). Их два (числа), поэтому пусть будет - "ЧислоА" и "ЧислоБ".
- Пишем объявление самого ящика (функции):
Функция СуммаЧисел(ЧислоА, ЧислоБ) КонецФункции
- Теперь нам осталось поместить внутри ящика команды, которые посчитают сумму входных параметров (ЧислоА и ЧислоБ) и вернут их в выходное отверстие (команда Возврат):
Функция СуммаЧисел(ЧислоА, ЧислоБ) Результат = ЧислоА + ЧислоБ; Возврат Результат; КонецФункции
- Отлично! Теперь мы можем использовать этот чёрный ящик в своей работе. Вызывается он так:
ЧислоС = СуммаЧисел(10, 25); Сообщить(ЧислоС); // выведет 35
Обращаю ваше внимание, что при вызове мы указали имя ящика (СуммаЧисел), а затем его входные параметры в круглых скобках. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Ящик выполнил свою работу и вернул результат в переменную ЧислоС, значение которой мы вывели командой Сообщить.
А вот как выглядит ящик, который принимает всего одно число и возвращает квадрат этого числа:
Функция КвадратЧисла(ЧислоА) Результат = ЧислоА * ЧислоА; Возврат Результат; КонецФункции |
Вызывается он так:
Сообщить(КвадратЧисла(10)); // выведет 100 |
Функции (ящики) могут принимать и один, и два и три и гораздо больше входных параметров. А могут и совсем не принимать.
Для примера давайте напишем функцию, которая всегда возвращает в качестве результата работы строку "Привет":
Функция Привет() Возврат "Привет"; КонецФункции |
Так как функция (ящик) совсем не содержит входных параметров (отверстий), то внутри круглых скобок при вызове писать ничего не нужно:
Строка = Привет(); Сообщить(Строка); |
Процедуры в языке 1С 8.3 - продолжение ...
С функциями более менее должно быть понятно теперь думаю всем. А что же такое процедуры? Да те же чёрные ящики:
- И входные отверстия (параметры) у них имеются.
- И команды они в себе также могут содержать.
- И другие ящики они также в себя могут включать.
А главное отличие процедур от функций в том, что они не содержат выходного отверстия. То есть процедура не возвращает нам обратный результат.
Таким образом, если нам нужно объединить группу команд, которая что-то сделает и вернёт нам результат (например, сумму чисел), то используем функции.
А если обратного результата не будет - то процедуры. Процедуры являются как бы укороченными функциями. Более простыми. Они могут принимать входные параметры и что-то с ними делать, но они не возвращают нам обратный результат после своей работы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Давайте в качестве примера напишем такой ящик-процедуру, который будет принимать на вход число и, если это число больше или равно нулю, то прямо внутри ящика будет выводится сообщение "положительное число", иначе "отрицательное число".
- Определим имя нашего ящика - "ОписаниеЧисла".
- Определим имя входного параметра - "ЧислоА";
- Определим описание нашего ящика:
Процедура ОписаниеЧисла(ЧислоА) КонецПроцедуры
- Теперь поместим внутрь ящика команды, которые выведут описание числа, в зависимости от его знака:
Процедура ОписаниеЧисла(ЧислоА) Если ЧислоА >= 0 Тогда Сообщить("положительное число"); Иначе Сообщить("отрицательное число"); КонецЕсли; КонецПроцедуры
- А вызывать наш ящик будем так:
ОписаниеЧисла(-3);
Выполните тест по следующему примеру
Процедура Привет(Число) Сообщить("Привет!"); Сообщить("Я процедура и меня только что вызвали."); Сообщить("У меня всего один параметр и его имя Число."); Сообщить("При моём вызове его значение указали равным " + Число); КонецПроцедуры |