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

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

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

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

В данном примере объявлена процедура Сообщение(), которое выводит сообщение на экран и функция ЧислоПи(), которая возвращает значение числа Пи. После вызова функции переменная а будет равна 3.14.

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

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

Возвращаемое значение

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

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

При этом, функцию можно вызывать как процедуру, то есть возвращаемое значение можно не присваивать никакой переменной:

Экспорт

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

Теперь функцию ЧислоПи() можно вызывать из других модулей конфигурации.

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

Параметры процедур и функций

С помощью параметров можно передавать в процедуру или функцию входные данные. Например:

Функция СуммаЧисел принимает 2 параметра и возвращает сумму этих параметров. При вызове функции параметры передаются по позиции. Слагаемое1 = 2, Слагаемое2 = 3, что соответствует позиции параметров при вызове функции.

Значения, которые передаются в функцию (в данном примере числа 2 и 3) называются аргументами функции. Часто используют такие понятия, как формальные и фактические параметры. Формальные параметры — это параметры процедуры или функции (в данном примере Слагаемое1 и Слагаемое2). Фактические параметры — это значения, которые передаются в процедуру или функцию (в данном примере это числа 2 и 3). То есть фактические параметры и аргументы это одно и то же.

В качестве параметров можно передавать литералы примитивных типов, переменные, сложные выражения:

Значения параметров по умолчанию

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

Пропущенные и опущенные параметры

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

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

Передача параметров по ссылке и по значению

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

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

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

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

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

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

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

Сериализация параметров

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

Платформа для внутренних нужд всегда использует XDTO-сериализацию в формат XML.

Этапы сериализации параметров при серверном вызове:

  1. выполняется сериализация всех параметров вызова серверного метода;
  2. выполняется вызов метода с одновременной передачей сериализованного представления параметров на сторону сервера;
  3. на сервере выполняется десериализация переданных параметров;
  4. выполняется собственно серверный вызов;
  5. выполняется сериализация всех возвращаемых параметров и результата вызова (если он есть);
  6. выполняется возврат управления на сторону клиентского приложения с одновременной передачей сериализованных данных;
  7. на стороне клиентского приложения происходит десериализация результатов вызова;
  8. вызов завершен.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: