Структура процедур и функций. Примеры.
Процедуры и функции имеют схожую структуру: Процедура | Функция Имя([[3нач] парам1 = [ значение1 ]] ,..., [[Знач] парамN = [ значениеN ]]) [Экспорт] [неисполняемые операторы объявления переменных] [исполняемые операторы] КонецПроцедуры | КонецФункции
Ключевое слово, или атрибут, Экспорт указывается для процедур и функций, располагаемых в глобальном модуле, в том случае, если их надо сделать доступными для вызова в локальных модулях форм. Процедуры вызываются в виде отдельного оператора с соблюдением следующего синтаксиса: Имя_процедуры ([ парам1 ],..., [ парамN ]); Функции, как правило, вызываются из выражений, но могут, так же как и процедуры, вызываться в виде отдельно оператора: Имя_функции ([ парам1 ], ..., [ парамN ]); Функция, если выход из нее осуществляется не в результате выполнения оператора Возврат выражение; а по оператору КонецФункции возвращает число 0. Функция, в которой нет оператора Возврат выражение; всегда возвращает нуль. Замечание. При программировании из функции следует выходить по оператору Возврат выражение; даже если выражение - это константа нуль. Например, функции ф1 и ф2 функция ф1(а) функция ф2(а) если а > 0 тогда если а > 0 тогда возврат 2 * а; возврат 2 * а; иначе конецЕсли; возврат 0; конецФункции // ф2 конецЕсли; конецФункции // ф1
возвращают одинаковый результат, однако вариант с ф1 отвечает принятому для функций стилю программирования, чего нельзя сказать о функции ф2. Впрочем, в данной ситуации функцию ф1 лучше записать так: функция ф1(a) возврат?(а > 0, 2 * а, 0); конецФункции // ф1 Процедуры и функции могут вызываться только из тех процедур и функций модуля, ранее которых расположены либо они сами, либо их предварительное описание. Например, в модуле с кодом функция ф1(а) возврат?(а > 0, 2 * а, 0); конецФункции // ф1 процедура п1 (д) далее // Предварительное описание процедуры п1 процедура Выполнить() перем б; б = 2.5 * ф1(3); // б= 15; функция ф1 вызывается из выражения п1(б); // б = 35; б - фактический параметр процедуры п1 Сообщить(б); конецПроцедуры // Выполнить функция ф2(с) возврат с / 2; конецФункции // ф2 процедура п1(д) // д - фактический параметр процедуры n1 д = 4*ф2(д) + 5; // д = 4 * 7.5 + 5 = 35 конецПроцедуры // п1 из процедуры Выполнить можно вызвать функцию ф1 и процедуру nl, но нельзя вызвать функцию ф2. Предварительное описание процедуры (функции) должно дублировать заголовок процедуры (функции). Не допускаются расхождения имен параметров, и если заголовок процедуры (функции) снабжен ключевым словом Экспорт, то оно должно присутствовать и в тексте предварительного описания перед ключевым словом Далее. Например: процедура п3(д1, д2) Экспорт далее // Предварительное описание процедуры пЗ Перечень имен процедур и функций модуля можно просмотреть, нажав, находясь в конфигураторе, на иконку & на панели инструментов Текстовый редактор. Так, для вышеприведенного набора процедур и функций, если их разместить, например, в модуле обработки Проба, мы получим приведенный на рис. 2.8 список (сортировка имен не задана). Рис. 2.8. Окно вывода списка процедур и функций модуля На начало любой процедуры (функции) или на ее предварительное описание можно переместиться, выбрав в вышеприведенном окне необходимую строку и нажав на кнопку Перейти.
|