Uzhast писал(а) 24. Сентября 2007 :: 06:32:Во-первых. Например, раньше можно было писать ИндексированнаяТаблица.ВыбратьСтроку (). А теперь нельзя. Можно только, например, ИндексированнаяТаблица.ВыбратьСтроку (0). Так же видел, что кто-то еще жаловался на такое поведение с параметрами по умолчанию.
Этот метод и его поведение для совместимости соответствуют штатному от ТаблицаЗначений.ВыбратьСтроку, там нет параметров по умолчанию вообще !Да, это баг, но мелкий.
Поправлю, это не проблема.
ЗЫ у родного метода ИТЗ.Показать этого недостатка нет
С тем кодом, на который еще жаловались, уже также разобрались
Uzhast писал(а) 24. Сентября 2007 :: 06:32:Во-вторых, подобное поведение не соответствует стандартному. Если я пишу
Процедура ХитроеСложение (А = 2, Б = 3)
То я могу вызывать ее как ХитроеСложение (3). И мне не надо писать ХитроеСложение (3,). А в 1С++ надо
-1 Лукавишь, ты не все варианты показал.
Стандартное поведение 1С очень и очень далеко от идеала и очень непонятно.Я для проверки написал пару тестов.
1. в Глобальнике определил метод
Функция глШтатныеПараметрыПоУмолчанию_Сложение(А = 2, Б = 3) Экспорт
Возврат А + Б;
КонецФункции
Вот его тест
Процедура Тест_ГлобальнаяФункция_ШтатныеПараметрыПоУмолчанию() Экспорт
Сам=Сам();
Значение = глШтатныеПараметрыПоУмолчанию_Сложение(4);
Сам.ПроверитьРавенство(Значение, 7); // 1
Значение = глШтатныеПараметрыПоУмолчанию_Сложение(,4);
Сам.ПроверитьРавенство(Значение, 6); // 2
Значение = глШтатныеПараметрыПоУмолчанию_Сложение(4,);
Сам.ПропуститьТест(0, "Штатные параметры по умолчанию неверно работают !!"+РазделительСтрок+
" Например, глоб. функция глШтатныеПараметрыПоУмолчанию_Сложение(4,) должна вернуть 7, "+РазделительСтрок+
" но 1С возвращает 4 :("+РазделительСтрок);
// а вот и БАГ 1С - система возвращает 4, а нужно 7
Сам.ПроверитьРавенство(Значение, 7); // 3
КонецПроцедуры
Т.е. получается, что 1С использует параметры по умолчанию для тех параметров, которые пропущены в начале списка параметров - 2 проверка теста
но не использует их для тех параметров, которые находятся в конце списка параметров - 3 проверка теста.
ИМХО очередное неявное и корявое поведение 1С , на которое никак нельзя полагаться 2.
1С++ этого недостатка лишен Полностью аналогичный тест для метода класса прекрасно проходит.
Кстати, в 1С++ проходит как ХитроеСложение (3), так и ХитроеСложение (3, )