[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 1

Автор уроков и преподаватель школы: Владимир Милькин

Сегодня мы приступаем к изучению того, без чего не может обойтись ни одна более менее серьезная программа - функций и процедур.

Функции и процедуры в языке 1С 8.3

Давайте я подведу вас к необходимости функций, заодно вы поймёте что это такое и почему они столь полезны для программистов.

Пусть нам требуется написать программу, которая вычисляет произведение суммы и разности двух введенных чисел. Выглядеть она будет так:

А = 0;
ВвестиЧисло(А);
Б = 0;
ВвестиЧисло(Б);
Результат = (А + Б) * (А - Б);
ОткрытьЗначение(Результат);

В данном случае формула вычисления результата достаточно проста, но она могла бы быть гораздо сложнее. А что если нам нужно вычислять её не один раз, а несколько? Причем в разных местах программы.

Неужели нам снова и снова придётся писать код для её вычисления:

Результат = (А + Б) * (А - Б);

Это никуда не годится. Нам придётся повторять один и тот же код, что приведёт к раздутости программы. И кроме того, переписывая его очередной раз мы можем допустить ошибку по невнимательности.

Вот бы придумать такое имя, которое будет связано с этой формулой и при обращении к нему мы будем обращаться ко всей этой формуле целиком. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Пусть этим именем будет ПроизведениеСуммыИРазности.

Получается теперь мы можем написать:

Результат = ПроизведениеСуммыИРазности;

И всё? Нет, конечно! Ведь непонятно произведение суммы и разности каких именно чисел нужно считать. Гораздо лучше будет передать эти числа нашему имени в качестве параметров, как мы обычно делаем при вызове команды:

Результат = ПроизведениеСуммыИРазности(А, Б);

Это, так называемый, вызов функции. Он выглядит точно также как и вызов многих других команд компьютера, которые мы уже неоднократно делали. Только это наша собственная команда, работу которой определяем мы, а не компьютер.

Давайте, наконец, определим нашу функцию, чтобы компьютер, встретив её вызов, не растерялся, а выполнил то, что мы хотим:

Функция ПроизведениеСуммыИРазности(А, Б)
    Результат = (А + Б) * (А - Б);
    Возврат Результат;
КонецФункции

Что включает в себя определение этой функции?

Прежде всего ключевое слово Функция следом за которым идёт имя, которое мы придумали сами.

Затем следуют имена параметров, заключенные в круглые скобки. Параметры - это данные, которые мы передадим в нашу функцию при её вызове. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Она с ними что-то сделает и возвратит результат. Каждый параметр имеет своё имя, которое мы также придумываем сами. Это имя можно использовать только внутри функции.

Дальше идёт тело. Это команды компьютеру, которые будут выполняться в тот момент, когда мы сделаем вызов нашей функции. Тело заканчивается ключевым словом КонецФункции.

Внутри функции могут выполняться абсолютно любые знакомые нам команды: условные операторы, циклы и прочее. Но хотя бы один раз внутри каждой функции должна присутствовать команда:

Возврат Результат;

Где вместо Результат может быть любое выражение, которое вернётся из функции в качестве её результата.

Мы можем вызывать функцию столько раз в программе сколько нам потребуется.

цепочка-вызовов-2

определение и вызов функции

Процедуры это те же самые функции, но они не возвращают результат и объявляются при помощи других ключевых слов: Процедура и КонецПроцедуры.

определение процедуры

вызов процедуры

цепочка-вызовов

Но функции и процедуры не следует писать лишь бы где! Для определения наших функций мы будем использовать новый модуль. Чтобы его добавить следуйте инструкциям ниже.

1. Раскройте список "Общие" в дереве конфигурации.

2. Найдите в нём пункт "Общие модули" и нажмите на нём правой кнопкой мыши. Выберите "Добавить".

Написание процедур 02

3. Добавился модуль. В правой части окна конфигуратора задайте его имя и свойства, как показано ниже.

 Внимание! Пожалуйста, ещё раз убедитесь, что вы поставили галки (Клиент, Сервер, Внешнее соединение) также, как на рисунке выше. 

4. Перейдите в этот модуль. Всё! Здесь можно писать наши функции и процедуры. Напишите процедуру с именем Привет, без параметров, после вызова которой компьютер просто здоровается с нами.

Написание процедур 04

Обратите внимание на ключевое слово Экспорт, которое идёт следом за круглыми скобками. Его наличие обязательно, так как мы определяем функцию в одном модуле (Уроки), а использовать будем совсем в другом (модуль управляемого приложения).

5. Теперь вернитесь в модуль управляемого приложения.

Написание процедур 05

6. И сделайте вызов нашей процедуры. Так как она находится в другом модуле к её имени добавляется "Уроки.".

Написание процедур 06

7. Запустите 1С и убедитесь, что всё работает!

Написание процедур 07

Пройдите тестирование

Начать тест
Ещё примеры функций

В следующих уроках мы продолжим изучение функций и процедур на практике, а пока хорошо уясните уже изученный материал и выполните домашнее задание. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Задание №36. Напишите функцию, которая принимает два числа и возвращает меньшее из них. Покажите пример использования этой функции.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся