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

Курс

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Здесь может быть Ваша реклама
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok