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

Позиционные и именованные аргументы

В языке «1С:Предприятия» параметры можно было передавать в методы только по порядку их описания в определении этих методов, то есть использовались только позиционные фактические параметры. Например:

Процедура МояПроцедура()

Переменная = МояФункция(55, "Ок", Ложь);

Сообщить(Переменная); //Переменная: 55

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

 

Функция МояФункция(Парам1, Парам2, Парам3)

Если Парам3 = Истина Тогда

Возврат Парам2;

Иначе

Возврат Парам 1;

КонецЕсли;

КонецФункции

Теперь в языке «Элемента» можно использовать как позиционные аргументы, как и именованные. То есть аргументы можно перечислять не только по порядку следования параметров, но и по имени параметров.

Форма записи именованного аргумента состоит из имени аргумента, символа равенства и самого аргумента. Например:
Парам3 = Ложь.

Причем порядок именованных аргументов не важен. Например:

метод МойМетод()

// Позиционная форма

Результат = Метод5(33, "!!!", Истина) //Результат: 33

//Опускание последнего параметра

Результат = Метод6(44, "+++") //Результат: 44

// Именованная форма

Результат = Метод5(Парам3 = Ложь, Парам1 = 77, Парам2 = "+++") //Результат: "+++"

//Опускание последнего параметра

Результат = Метод6(Парам2 = "+++", Парам1 = 111) //Результат: 111

;

метод Метод5(Парам1: Число, Парам2: Строка, Парам3: Булево): Число|Строка

если Парам3

возврат Парам1

иначе

возврат Парам2

;

;

метод Метод6(Парам1: Число, Парам2: Строка, Парам3 = Истина): Число|Строка

если Парам3

возврат Парам1

иначе

возврат Парам2

;

;

Можно смешивать позиционные и именованные аргументы, при этом все именованные аргументы должны идти после позиционных. Например, в следующем примере при вызове метода Метод5() первый аргумент –позиционный, остальные – именованные:

метод МойМетод()

// Смешанная форма

Результат = Метод5(55, Парам3 = Истина, Парам2 = "+++") //Результат: 55

;

метод Метод5(Парам1: Число, Парам2: Строка, Парам3: Булево): Число|Строка

если Парам3

возврат Парам1

иначе

возврат Парам2

;

;

В языке «1С:Предприятия», если необязательный параметр находился в списке вызова между других обязательных параметров, то пропускать его было нельзя, но можно было не указывать его значение – вместо него ставилась запятая. Например:

Процедура МояПроцедура()

Переменная = МояФункция(22, , Истина);

Сообщить(Переменная); //Переменная: 22

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

 

Функция МояФункция(Парам1, Парам2 = 0, Парам3)

Если Парам3 = Истина Тогда

Возврат Парам1;

Иначе

Возврат Парам2;

КонецЕсли;

КонецФункции

Теперь в языке «Элемента» пропуск необязательных позиционных аргументов допускается только в том случае, если они идут в конце списка. При использовании именованных аргументов или и тех и других пропускать необязательные аргументы в середине списка можно. Если используются и те и другие, то за пропущенными аргументами должны следовать только именованные. Например, в следующем примере при вызове метода Метод7() первый параметр – позиционный, второй опущен, а третий – именованный:

метод МойМетод()

// Смешанная форма

Результат = Метод7(77, Парам3 = "???") //Результат: "???"

;

метод Метод7(Парам1: Число, Парам2 = Истина, Парам3: Строка): Число|Строка

если Парам2

возврат Парам3

иначе

возврат Парам1

;

;

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

Кроме того, можно перед описанием метода или конструктора использовать аннотацию @ИменованныеПараметры. Это значит, что запрещается вызывать метод с позиционными аргументами (допускаются только именованные аргументы). Например:

метод МойМетод()

Тест(Параметр = 123)

;

@ИменованныеПараметры

метод Тест(Параметр: Число)

;

Назад: Передача параметров по значению
Дальше: Перегрузка методов