Имя: Пароль:
1C
 
Разное количество переменных в функции при вызове?
0 program345
 
03.04.25
08:32
Привет!

Заметил вызов функции

Область.Параметры.ФактическоеЗначение = РасчитатьЗначениеПоАлгоритму(СтрокаПоказатель.Показатель, Отчет.Сотрудник);


тут 2 параметра, а сама функция имеет 3:

Функция РасчитатьЗначениеПоАлгоритму(Показатель, Сотрудник, ПрошлыйПериод = 0) 


Для чего так делать? Есть вызов еще откуда-то и там передается 3 параметра?
1 Kigo_Kigo
 
03.04.25
08:35
Да, 3-й параметр пердопределенный, если его не передавать то он равен 0
2 Мультук
 
гуру
03.04.25
09:00
(0)

Я не знаю в каком языке впервые появились аргументы по умолчанию

wiki:Аргумент_по_умолчанию

Утверждает, что в С++.



Допустим ты написал функцию

Функция МойСинус(Икс) Экспорт

    возврат sin(Икс);

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



Функция используется в куче модулей, внешних обработок, отчётов.

Но приходит какое-то время и выясняется, что в некоторых случаях, в очень редких отчётах нужно вычислять по другому,
учитывать "ОсобыеОбстоятельства"

Ты переписываешь функцию

Функция МойСинус(Икс, ОсобыеОбстоятельства) Экспорт
    
    Если ОсобыеОбстоятельства = Истина Тогда
        Возврат 4; 
    Иначе
        возврат sin(Икс);
    конецЕсли;

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


И всё бы хорошо, но в большинстве мест вызова этой функции "ОсобыеОбстоятельства" не нужны.
Делать рефакторинг ? Можно, муторно (учитывая внешние отчёты и обработки), но проще сделать вот так

Функция МойСинус(Икс, ОсобыеОбстоятельства = Ложь) Экспорт
    
    Если ОсобыеОбстоятельства = Истина Тогда
        Возврат 4; 
    Иначе
        возврат sin(Икс);
    конецЕсли;

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


Тогда везде будет работать старый вариант вызова

y = МойСинус(Х);


А там где нужно

y = МойСинус(Х, Истина);

y = МойСинус(Х, Ложь);
3 АгентБезопасной Нацио
 
03.04.25
09:07
(2)
Функция Пи(ВоенноеВремя=Ложь) Экспорт
    
    Если ВоенноеВремя= Истина Тогда
        Возврат 4;
    Иначе
        возврат 3.1415926;
    конецЕсли;

КонецФункции
4 mikecool
 
03.04.25
09:29
(0) ты прикалываешься?
5 АгентБезопасной Нацио
 
03.04.25
09:38
(4) Разное может быть. может, ник угнали. А может, болезнь или ЧМТ...
6 program345
 
03.04.25
09:50
(2) спасибо! познавательно.