Передача параметров в 1с выполняется либо по ссылке или по значению. Обмен параметрами ключевой вопрос любого языка программирования. Также это важнейший аспект в работе с процедурами и функциями. Процедуры и функции в 1с могут обмениваться параметрами или аргументами.
Процедуры и функции передают параметры одним из способов:
- по ссылке;
- по значению.
Передача по ссылке
Во-первых способ называется передачей по ссылке и представляет собой передачу не конкретного значения параметра, а адреса памяти (ссылки на переменную), где расположено это значение. Изменение переданного значения в вызываемой процедуре или функции приведет к изменению передаваемой переменной в вызывающем методе. Передача параметров по ссылке используется в 1с по умолчанию.
Пример кода:
&НаКлиенте
процедура РасчитатьСумму(Параметр);
Параметр=20*20;
конецпроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Параметр=100;
РасчитатьСумму(Параметр);
Сообщить(Параметр);
КонецПроцедуры
//Выведется 400
Результат выполнения кода:
Передача по значению
Во-вторых способ называется передачей по значению и представляет собой передачу копии значения параметра. В этом случае изменение переданного значения в вызываемой процедуре или функции не приведет к изменению значения передаваемой переменной в вызывающем методе.
Пример кода:
&НаКлиенте
процедура РасчитатьСумму(знач Параметр);
Параметр=20*20;
конецпроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Параметр=100;
РасчитатьСумму(Параметр);
Сообщить(Параметр);
КонецПроцедуры
Результат выполнения кода:
Замечание: Примеры кода отличаются только одной строчкой: “процедура РасчитатьСумму(знач Параметр)”. Если используется ключевое слово знач то передача по значению, иначе передача по ссылке.
Передача параметров процедур и функций зависит от того, какой вызов будет выполняться:
● вызов без передачи управления между клиентом и сервером (только на клиенте или только на сервере);
● вызов с передачей управления между клиентом и сервером.
Довольно интересный материал “передача параметров процедур и функций в 1с” Полезная информация..
Ох, благодарю.