Падает с ошибкой проверка через инспектор кода с включенной проверкой BSL LS после подключения ИР Адаптер

YuriyBak Открыто

Добрый день!
После запуска TurboConf проверка проходит нормально, пока не будет включен ИР Адаптер. После этого проверка проходит, но не выводятся результаты работы - показывает такое сообщение:

ScriptEngine.Machine.RuntimeException: {Модуль C:\1С\TurboConf\settings\BslServer\BslServerDefault.os / Ошибка в строке: 62 / {Модуль  / Ошибка в строке: -1 / Неверное значение аргумента}    
}    
	ЧтениеJSON.ОткрытьФайл(ПутьКФайлуОтчета, КодировкаТекста.UTF8);
 ---> ScriptEngine.Machine.RuntimeException: {Модуль  / Ошибка в строке: -1 / Неверное значение аргумента}    

   в ScriptEngine.HostedScript.Library.TextEncodingEnum.GetEncoding(IValue encoding, Boolean addBOM)
   в ScriptEngine.HostedScript.Library.Json.JSONReader.OpenFile(String JSONFileName, IValue encoding)
   --- Конец трассировки внутреннего стека исключений ---
   в ScriptEngine.HostedScript.Library.Json.JSONReader.OpenFile(String JSONFileName, IValue encoding)
   в lambda_method(Closure , JSONReader , IValue[] )
   в ScriptEngine.Machine.Contexts.AutoContext`1.CallAsProcedure(Int32 methodNumber, IValue[] arguments)
   в ScriptEngine.Machine.MachineInstance.ResolveMethodProc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
   в ScriptEngine.Machine.MachineInstance.ResolveMethodProc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody(IRunnable sdo)
   в ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
   в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)

Если перезапустить TurboConf, то проверка снова проходит хорошо, пока не будет подключен ИР Адаптер.

Воспроизводится на пробной версии TurboConf 6.2.8971.25010 от 24 июля 2024 г.
Версия ИР Адаптер скачана из TurboStore, инструменты разработчика скачаны автоматически ИР Адаптером.

Комментарии

tormozit
#1, 26 августа 2024 17:07

Выполни команду адаптера "Сообщить о проблеме"
tormozit изменил статус на Открыто


YuriyBak
#2, 26 августа 2024 17:23

Эта команда открывает новую задачу в браузере. Заполнить там то же самое, что я здесь написал?


tormozit
#3, 26 августа 2024 17:27

Нужен файл, который она формирует


YuriyBak
#4, 26 августа 2024 17:33

Ссылка скрыта

Этот?


tormozit
#5, 26 августа 2024 18:07

да


tormozit
#6, ред. 26 августа 2024 21:48

ИР к этой ошибке не имеет прямого отношения. Это следствие ошибки Оскрипта. Смотри заявки:
https://turboconf.ru/Tasks/9616
https://turboconf.ru/Tasks/9510
Прошу перенести заявку в общий раздел https://turboconf.ru/Tasks?forumId=6


YuriyBak
#7, 27 августа 2024 00:26

(6) tormozit, спасибо, переношу в общий раздел
YuriyBak изменил статус на Открыто


bolsun
#8, 27 августа 2024 18:16

(7) YuriyBak, нужно удалить этот файл C:\1С\TurboConf\settings\BslServer\BslServerDefault.os
Видимо остался от предыдущей версии.


YuriyBak
#9, 27 августа 2024 20:02

(8) bolsun, после удаления проверка с включенной BSL LS даже не начинается. Такая ошибка:

ScriptEngine.Machine.ExternalSystemException: {Модуль C:\1С\TurboConf\scripts\builtin\CodeInspector.os / Ошибка в строке: 109 / Внешнее исключение (System.IO.FileNotFoundException): Файл 'C:\1С\TurboConf\settings\BslServer\BslServerDefault.os' не найден.}    
			BslServer = ЗагрузитьСценарий(СкриптПроверкиПоУмолчанию);
 ---> System.IO.FileNotFoundException: Файл 'C:\1С\TurboConf\settings\BslServer\BslServerDefault.os' не найден.
   в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
   в ScriptEngine.Environment.FileBasedSource.GetCodeString()
   в ScriptEngine.CompilerService.CompileInternal(ICodeSource source)
   в ScriptEngine.CompilerService.Compile(ICodeSource source)
   в ScriptEngine.Machine.Contexts.AttachedScriptsFactory.CompileModuleFromSource(CompilerService compiler, ICodeSource code, ExternalContextData externalContext)
   в ScriptEngine.Machine.Contexts.AttachedScriptsFactory.LoadAndCreate(CompilerService compiler, ICodeSource code, ExternalContextData externalContext)
   в ScriptEngine.HostedScript.Library.SystemGlobalContext.LoadScript(String path, StructureImpl externalContext)
   в lambda_method(Closure , SystemGlobalContext , IValue[] )
   в ScriptEngine.HostedScript.Library.SystemGlobalContext.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
   в ScriptEngine.Machine.MachineInstance.CallContext(IRuntimeContextInstance instance, Int32 index, MethodInfo& methInfo, IValue[] argValues, Boolean asFunc)
   в ScriptEngine.Machine.MachineInstance.MethodCallImpl(Int32 arg, Boolean asFunc)
   в ScriptEngine.Machine.MachineInstance.CallFunc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   --- Конец трассировки внутреннего стека исключений ---
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody(IRunnable sdo)
   в ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
   в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)


bolsun
#10, 27 августа 2024 20:07

(9) YuriyBak, попробуй этот файл поместить в \settings\BslServer\

BslServerDefault.os


YuriyBak
#11, 27 августа 2024 21:50

(10) bolsun, Проверка BSL LS проходит, а после такая ошибка:

ScriptEngine.Machine.TypeConvertionException: {Модуль C:\1С\TurboConf\settings\BslServer\BslServerDefault.os / Ошибка в строке: 68 / Значение не является значением объектного типа}    
	Для каждого КлючЗначение Из Результат Цикл   в ScriptEngine.Machine.Values.GenericValue.AsObject()
   в ScriptEngine.Machine.MachineInstance.PushIterator(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
   в ScriptEngine.Machine.MachineInstance.ResolveMethodProc(Int32 arg)
   в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
   в ScriptEngine.Machine.MachineInstance.ExecuteCode()
   в ScriptEngine.Machine.MachineInstance.ExecuteModuleBody(IRunnable sdo)
   в ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
   в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)

Но проявляется только с включенным ИР Адаптером. Когда он неактивен, все ок


bolsun
#12, 27 августа 2024 22:33

@TormozIT как подключение адаптера может быть связано с этой ошибкой? Это какой-то новый баг в OneScript?


bolsun
#13, 27 августа 2024 22:35

Если я правильно понял, что без ИР адаптера скрипт работает, а после подключения ошибка.


bolsun
#14, 29 августа 2024 12:55

Да, ошибка воспроизводится и как раз связана с багом OneScript (ее частный случай)

https://github.com/EvilBeaver/OneScript/issues/1415#issuecomment-2176963064

Воспроизведение

  • Один раз вызвать проверку BslServer (пройдет успешно).
  • Вызвать подсказку T9 с включенным адаптером, добиться определения типа в элементах меню (в это время произойдет асинхронный вызов OneScript, который перезатрет глобальные объекты).
  • Последующий вызов BslServer приведет к ошибке.


YuriyBak
#15, 09 октября 2024 10:49

Добрый день!
Удалось решить проблему. Путь, конечно, обходной, но проверка BSL работает корректно.
После подключения ИР Адаптера перестают корректно отрабатывать сравнения типа таких:

Если ТипJSON = ТипЗначенияJSON.НачалоОбъекта Тогда

Но при этом нормально отрабатывают такие проверки:

Если Строка(ТипJSON) = Строка(ТипЗначенияJSON.НачалоОбъекта) Тогда

Поэтому я заменил проверки в процедуре КоллекцияДиагности в файле BslServer.os.
Возможно, это поможет найти источник ошибки и исправить ее. Но даже если нет, тоже не страшно )

Вот мой файл BslServer.os:
BslServer.os


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера