В языке «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)
;
@ИменованныеПараметры
метод Тест(Параметр: Число)
;