From d4aaf3455b852eed037a51e267cdf9bda2f76946 Mon Sep 17 00:00:00 2001 From: Mr-Rm Date: Thu, 2 Jan 2025 02:35:32 +0400 Subject: [PATCH] =?UTF-8?q?v2:=20=D0=B4=D0=B5=D1=84=D0=BE=D0=BB=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80=D0=B5=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D1=8F=20+=D1=82=D0=B5=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Machine/Contexts/UserScriptContextInstance.cs | 15 +++++++++++++-- tests/native-lib/test-native-use.os | 9 +++++++-- ...73\321\207\320\260\320\275\320\270\321\216.os" | 6 ++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 "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" 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") + +КонецПроцедуры +