Процедуры и функции (бесплатная статья по Программированию 1С)
из цикла статей «Первые шаги в разработке на 1С»

О чем эта статья

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней будут рассмотрены следующие вопросы:

  • Что такое процедуры и функции и когда их нужно использовать?
  • В чем отличие процедуры от функции?
  • Что такое параметр процедуры (функции) и как его передать?
  • В каком случае передавать параметр по ссылке, а в каком по значению?
  • Как быстро посмотреть список процедур текущего модуля?

Применимость

Материал полностью актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

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

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

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

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

В итоге облегчается сопровождение прикладного решения.

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

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

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

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

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

Процедура или функция начинает описываться со слова Процедура (Функция). Далее следует Имя процедуры (функции). После имени обязательно указываются круглые скобки. Внутри скобок могут находиться описываемые параметры.

Данные параметры нужно будет передавать при вызове (при обращении к процедуре). После круглых скобок может стоять слово Экспорт (экспортная функция).

Потом следует тело процедуры (функции), т.е. последовательность из любого количества операторов.

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

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

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

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

Параметры, переданные в процедуру (функцию) при ее вызове, могут быть использованы при формировании возвращаемого результата функцией или при выборе используемого алгоритма в процедуре.

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

В том случае, если при вызове процедуры (функции) значение параметра будет не задано, то оно примет значение, используемое по умолчанию.

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

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

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

Т.е. при вызове процедуры (функции) мы передавали параметр с одним значением, а после отработки вызываемой процедуры (функции) значение параметра изменилось.

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

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

По умолчанию все параметры передаются по ссылке. Чтобы передать параметр по значению, в описании процедуры перед параметром нужно поставить ключевое слово Знач.

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

Если в теле процедуры-обработчика установить данному параметру значение Истина, то процедура не отработает.

Порядок следования процедур и функций в модуле 1С:Предприятие 8 значения не имеет. Из любой процедуры (функции) модуля можно вызывать любую другую процедуру или функцию данного модуля.

Чтобы обратиться к списку процедур текущего модуля в панели конфигуратора можно нажать на кнопку в виде лупы с надписью «PROC» или использовать горячие клавиши (Ctrl+Alt+P).

Откроется диалоговое окно, в котором описаны функции F(x) и процедуры P( ). К ним возможно обращаться.

Список может быть отсортирован в алфавитном порядке (для этого устанавливается галочка «Сортировка»).

При снятой галочке процедуры и функции в списке размещены в соответствии с их следованием в модуле.

Список процедур в панели конфигуратора

Кроме процедур и функций в списке для разных модулей будут доступны разные стандартные обработчики. При выборе обработчика двойным кликом мыши в модуле создается шаблон соответствующей процедуры (обработчика события).

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

Справа от кнопки с надписью «PROC» располагается поле. В этом поле указано имя текущей процедуры (функции).

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

PDF-версия статьи

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.


Статья по программированию - в PDF-формате

Статья в PDF-формате

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

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Комментарии / обсуждение (4):

  1. progr-2008

    Все хорошо, можно бы добавить про передачу параметра Отказ.

  2. Escander

    Для новичков статья полезная. Многие делали ошибку изменяя значение входящего параметра, а потом удивляясь почему в вызываемом коде значение тоже изменилось.

Комментарии закрыты

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.