v2 native: не работает сравнение с Неопределено
Опишите ошибку v2 native: не работает сравнение с Неопределено
Воспроизведение ошибки
- Запустить код ...
#native
Нечто = Неопределено;
Если Нечто <> Неопределено Тогда
КонецЕсли;
- Увидеть ошибку OneScript.Commons.TypeConversionException: OneScript.Values.BslUndefinedValue: Преобразование к типу 'Число' не поддерживается at OneScript.Values.BslValue.op_Explicit(BslValue target) in S:_Repo\OneScript\src\OneScript.Core\Values\BslValue.cs:line 33 at OneScript.Native.Runtime.DynamicOperations.ToNumber(BslValue value) in S:_Repo\OneScript\src\OneScript.NativeRuntime\DynamicOperations.cs:line 78 at lambda_method18(Closure , NativeClassInstanceWrapper , BslValue[] ) at OneScript.Native.Runtime.CallableMethod.Invoke(Object target, BslValue[] args) in S:_Repo\OneScript\src\OneScript.Native\Runtime\CallableMethod.cs:line 46 at OneScript.Native.Runtime.BslNativeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) in S:_Repo\OneScript\src\OneScript.Native\Runtime\BslNativeMethodInfo.cs:line 51 at OneScript.Native.Runtime.NativeExecutorProvider.Executor(BslObjectValue target, IExecutableModule module, BslMethodInfo method, IValue[] arguments) in S:_Repo\OneScript\src\OneScript.Native\Runtime\NativeExecutorProvider.cs:line 45 at OneScript.Execution.ExecutionDispatcher.Execute(BslObjectValue target, IExecutableModule module, BslMethodInfo method, IValue[] arguments) in S:_Repo\OneScript\src\OneScript.Core\Execution\ExecutionDispatcher.cs:line 43 at OneScript.Execution.ExecutionExtensions.ExecuteModuleBody(ExecutionDispatcher dispatcher, BslObjectValue target, IExecutableModule module) in S:_Repo\OneScript\src\OneScript.Core\Execution\ExecutionExtensions.cs:line 21 at ScriptEngine.Machine.Contexts.ScriptDrivenObject.OnInstanceCreation() in S:_Repo\OneScript\src\ScriptEngine\Machine\Contexts\ScriptDrivenObject.cs:line 120 at ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation() in S:_Repo\OneScript\src\ScriptEngine\Machine\Contexts\UserScriptContextInstance.cs:line 57 at ScriptEngine.Machine.Contexts.ScriptDrivenObject.Initialize() in S:_Repo\OneScript\src\ScriptEngine\Machine\Contexts\ScriptDrivenObject.cs:line 130 at ScriptEngine.ScriptingEngine.InitializeSDO(ScriptDrivenObject sdo) in S:_Repo\OneScript\src\ScriptEngine\ScriptingEngine.cs:line 173 at ScriptEngine.ScriptingEngine.NewObject(IExecutableModule module, ExternalContextData externalContext) in S:_Repo\OneScript\src\ScriptEngine\ScriptingEngine.cs:line 145 at ScriptEngine.HostedScript.Process.Start() in S:_Repo\OneScript\src\ScriptEngine.HostedScript\Process.cs:line 35
Окружение
- Версия: latest build
Дополнительная информация Не работает даже прямое сравнение
Если Неопределено = Неопределено Тогда
Для других типов сравнение падает при компиляции:
#native
сообщить('20221007'<'20221008');
{Модуль S:_lab\OneScript2\native.os /Ошибка в строке: 2,9 / Ошибка компиляции статического модуля OneScript.Compilation.CompilerException: {Модуль S:_lab\OneScript2\native.os / Ошибка в строке: 0,0 / Operation LessThan is not defined for dates (-1,-1)}
#native
Стр = "А";
сообщить(Стр = "Б");
{Модуль S:_lab\OneScript2\native.os / Ошибка в строке: 3,9 / Ошибка компиляции статического модуля OneScript.Compilation.CompilerException: {Модуль S:_lab\OneScript2\native.os / Ошибка в строке: 0,0 / Operator Equal is not defined for strings (-1,-1)}
Булево работает.
Немножко починил