diff --git a/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs b/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs index 401e8ed97..ba85b2494 100644 --- a/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs +++ b/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs @@ -65,7 +65,7 @@ protected override void OnInstanceCreation() base.OnInstanceCreation(); var methId = GetScriptMethod(OnInstanceCreationTerms.Russian, OnInstanceCreationTerms.English); - int constructorParamsCount = ConstructorParams.Count(); + int constructorParamsCount = ConstructorParams.Length; if (methId > -1) { @@ -83,7 +83,18 @@ protected override void OnInstanceCreation() else if (parameters.Skip(constructorParamsCount).Any(param => !param.HasDefaultValue)) throw RuntimeException.TooFewArgumentsPassed(); - CallScriptMethod(methId, ConstructorParams); + if (constructorParamsCount < procParamsCount) + { + var ctorParameters = new IValue[procParamsCount]; + ConstructorParams.CopyTo(ctorParameters, 0); + for (int i = constructorParamsCount; i < procParamsCount; i++) + { + ctorParameters[i] = (IValue)parameters[i].DefaultValue; + } + CallScriptMethod(methId, ctorParameters); + } + else + CallScriptMethod(methId, ConstructorParams); } else { diff --git a/tests/native-lib/test-native-use.os b/tests/native-lib/test-native-use.os index 26e561fe4..07488fe90 100644 --- a/tests/native-lib/test-native-use.os +++ b/tests/native-lib/test-native-use.os @@ -14,7 +14,8 @@ Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСПропущеннымиПараметрами"); Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСОшибочноПропущеннымиПараметрами"); Тесты.Добавить("ТестДолжен_ПроверитьВызовМетодовСЛишнимиПараметрами"); - + Тесты.Добавить("ТестДолжен_ПроверитьВызовКонструктораСПараметрамиПоУмолчанию"); + Возврат Тесты; КонецФункции @@ -86,4 +87,8 @@ КонецПопытки; юТест.ПроверитьИстину(ОК, "Не было исключения о лишнем параметре."+Ошибка); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьВызовКонструктораСПараметрамиПоУмолчанию() Экспорт + Сценарий = Новый ПараметрыКонструктораПоУмолчанию("Парам1"); +КонецПроцедуры diff --git "a/tests/native-lib/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\276\320\243\320\274\320\276\320\273\321\207\320\260\320\275\320\270\321\216.os" "b/tests/native-lib/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\276\320\243\320\274\320\276\320\273\321\207\320\260\320\275\320\270\321\216.os" new file mode 100644 index 000000000..f654e0ee9 --- /dev/null +++ "b/tests/native-lib/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\260\320\237\320\276\320\243\320\274\320\276\320\273\321\207\320\260\320\275\320\270\321\216.os" @@ -0,0 +1,6 @@ +#native + +Процедура ПриСозданииОбъекта(Параметр1, Параметр2="Парам2") + +КонецПроцедуры +