Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_ПрикладноеПрограммирование8.doc
Скачиваний:
42
Добавлен:
22.09.2019
Размер:
51.67 Mб
Скачать

1.4.3.19 Процедуры и функции

Язык 1С поддерживает использование подпрограмм, которые могут быть оформлены либо в виде процедуры, либо в виде функции.

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

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

1.4.3.19.1 Описание процедур и функций

1.4.3.19.1.1 Процедура

Синтаксис секции описания процедуры:

Процедура <Имя_проц>([[Знач] <Парам1>[=<ДефЗнач>],

... , [Знач] <ПapaмN>[=<ДeфЗнaч>]]) [Экспорт][Далее]

//Объявления локальных переменных;

//Операторы;

...

[Возврат;]

//Операторы;

...

КонецПроцедуры

Таблица 1.13 Параметры секции описания «Процедура»

<Имя_проц>

Назначает имя процедуры.

Знач

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

<Парам1>, ..., <ПарамN>

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

=<ДефЗнач>

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

Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо принимает «пустое» значение (значение неопределенного типа).

Если параметру не задано значение по умолчанию, и он является последним в списке передаваемых параметров, то при вызове процедуры его нельзя опускать.

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

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

Экспорт

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

Далее

Ключевое слово обозначающее, что это предварительное описание процедуры. Если в конце описания процедуры строит это ключевое слово, тело процедуры не пишется.

//Объявления локальных переменных

Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры.

//Операторы

Исполняемые операторы процедуры.

Возврат

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

КонецПроцедуры

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

Ключевое слово «Процедура» начинает секцию исходного текста, выполнение которого можно инициировать из любой точки программного модуля, просто указав «Имя_процедуры» со списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в глобальном программном модуле в теле описания функции использовано ключевое слово «Экспорт», то это означает, что данная процедура является доступной из всех других программных модулей конфигурации. Ключевое слово «Экспорт» имеет смысл использовать только в глобальном программном модуле.

При выполнении оператора «Возврат» процедура заканчивается и возвращает управление в точку вызова. Если в тексте процедуры не встретился оператор «Возврат», то после выполнения последнего исполняемого оператора происходит выполнение неявного оператора «Возврат». Конец программной секции процедуры определяется по операторной скобке «КонецПроцедуры».

Переменные, объявленные в теле процедуры в разделе «//Объявления локальных переменных », являются локальными переменными данной процедуры, поэтому доступны только в этой процедуре (за исключением случая передачи их как параметров при вызове других процедур, функций или методов).

Ключевые слова «Процедура», «КонецПроцедуры», являются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля).

Пример:

Перем Глоб;

// Описание процедуры

Процедура МояПроцедура(Пар1, Пар2, ПарЗ) Экспорт

Глоб = Глоб + Пар1 + Пар2 + ПарЗ;

Возврат;

КонецПроцедуры

Глоб = 123;

МояПроцедура(5, 6, 7); // Вызов процедуры