6.4.9328.28227
Один раз за несколько часов работы увидел такую новую ошибку
ScriptEngine.Machine.RuntimeException: {Модуль C:\turboconf\user_scripts\RDT.os / Ошибка в строке: 10140 / Конструктор не найден (ТурбоКонф)}
ТурбоКонф = Новый ("ТурбоКонф");
---> ScriptEngine.Machine.RuntimeException: {Модуль / Ошибка в строке: -1 / Тип не зарегистрирован (ТурбоКонф)}
в ScriptEngine.Machine.StandartTypeManager.GetTypeByName(String name)
в ScriptEngine.Machine.TypeManager.GetFactoryFor(String typeName)
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.TypeManager.GetFactoryFor(String typeName)
в ScriptEngine.Machine.MachineInstance.NewFunc(Int32 argCount)
в 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)
Ссылка скрыта
Подозреваю что связано с возросшей многопоточностью выполнения обработчиков ПриАктивизацииСтрокиТ9 https://turboconf.ru/Tasks/10372
#1, 16 июля 2025 17:38
OneScript не поддерживает корректную работу в нескольких потоках, скорее всего отмена одной фоновой задачи приводит к уничтожению контекста, который был создан для другой задачи.
#2, 16 июля 2025 17:39
Можно попробовать убрать из этой реализации отмену текущих фоновых задач ПриАктивизацииСтроки.
#3, ред. 16 июля 2025 17:46
(2) bolsun, Да, я могу их сам прервать изнутри в коде 1С через проверку файла-флага. Выброшу исключение и они досрочно корректно завершатся на твоем уровне.
#4, 16 июля 2025 19:23
В 6.4.9328.35463 тоже сумел вызывать такую ошибку.
Ссылка скрыта
#5, 16 июля 2025 20:05
(4) tormozit, значит постановка обработчиков в очередь через lock() необходима.
#6, ред. 16 июля 2025 20:08
возможно тогда наоборот поможет отмена накопленных фоновых задач ПриАктивизацииСтроки
#7, ред. 16 июля 2025 20:57
6.4.9328.40426
При вставке значения T9 отменяются накопленные в очереди задачи. Но теоретически какая-то задержка возможна при вставке, если в данный момент обработчик ПриАктивизацииСтроки уже выполняется.
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#8, 16 июля 2025 21:29
В предыдущей версии накопленные задачи не отменялись при вставке. Другая реализация
6.4.9328.42197
https://disk.yandex.ru/d/RKeh9wtdT5zNMQ
#9, 16 июля 2025 21:42
Если все обработчики теперь снова вызываются строго последовательно, тогда снова возникает ожидание при нажатии ENTER в случае, если текущая строка вызвала долгое вычисление. Поэтому прошу в параметрах обработчика ПриАктивизацииСтроки добавить передачу имени файла-флага, наличие которого будет означать сигнал досрочного завершения вычислений. В начальной схеме этот файл создавал мой обработчик ПриВыбореЗначения. Но с учетом того что этот обработчик снова будет стоять в очереди, у меня нет возможности устанавливать такой флаг.
#10, 16 июля 2025 21:55
(9) tormozit, как будут удаляться эти файлы-флаги, если адаптер не установлен?
#11, ред. 16 июля 2025 21:59
(10) bolsun, При добавлении задачи вызова обработчика ПриВыбореЗначения в очередь (при нажатии ENTER) создавай файл-флаг. А уже в коде этой задачи непосредственно перед вызовом из скрипта метода ПриВыбореЗначения удаляй этот файл.
#12, ред. 16 июля 2025 22:09
(11) tormozit, пользователь может не вставлять значение, а закрыть подсказку отменой. Тогда уж при закрытии окна подсказки удалять. И имя файла флага можно сделать константой и не передавать в обработчик, т.к. при закрытии подсказки он будет всегда удаляться.
Файл будет создаваться в папке данных ТК, путь к которой можно получить через настройки.
#13, ред. 16 июля 2025 23:04
(12) bolsun, файл-флаг должен создаваться сразу при выборе пользователем элемента списка, т.е. нажатии ENTER или клика в списке. Как пользователь может при этом закрыть окно списка Т9 без выполнения задачи обработки выбора значения? Кажется, что такое невозможно, даже если в этот момент выполняется обработчик ПриАктивизацииСтроки, т.к. после него (даже если он выбросит исключение) обязательно выполнится задача вызова обработчика ПриВыбореЗначения, в которой первым делом будет удален файл-флаг. Но для подстраховки можно конечно удалять этот файла и при закрытии окна.
#14, ред. 16 июля 2025 23:12
(13) tormozit, файл-флаг будет создаваться в момент показа подсказки и удаляться при ее закрытии. Он обозначает, что подсказка еще открыта. Если файла нет - прекращаешь выполнение обработчиков ПриАктивизацииСтроки.
#15, ред. 16 июля 2025 23:22
(14) bolsun, Такой файл не поможет моему коду понять, что ему надо досрочно прерваться, т.к. от нажатия пользователем ENTER и до вызова обработчика ПриВыбореЗначения в скрипте файл будет существовать. Возможно я туманно объяснил в (9), но вся суть флага - токен отмены, т.е. сигнал срочного завершения текущих операций для ускорения перехода твоей очереди задач к выполнению задачи вызова обработчика ПриВыбореЗначения. И только после завершения этой задачи ты уже закрываешь окно.
#16, ред. 16 июля 2025 23:24
(15) tormozit, аналогично, отсутвие такого файла - причина срочно прерваться. Но таким образом я могу точно гарантировать, подсказка видима или нет. Выполнять дальнейшую обработку ПриАктивизацииСтроки смысла нет, если подсказку уже закрыли тем или иным способом.
#17, 16 июля 2025 23:30
Тема задвоилась, закрываю, продолжение в исходной теме https://turboconf.ru/Tasks/10372
bolsun изменил статус на Закрыто