Много раз уже видел такую ошибку на последней версии Турбоконфа
ScriptEngine.Machine.RuntimeException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 11002 / Конструктор не найден (ТурбоКонф)}
ТурбоКонф = Новый ("ТурбоКонф");
---> 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)
Ссылка скрыта
#1, ред. 03 октября 2025 09:27
В этой версии я вызываю некоторые обработчики без локера (обработчик ИИ и выбора значения).
Ошибка происходит из-за того, что OneScript не поддерживает несколько одновременных вызовов, т.к. использует статические поля и затирает текущий контекст уже исполняемого обработчика.
Значит вариант с асинхронным вызовом обработчиков не будет работать, поэтому все таки придется все обработчики вызывать в порядке очереди.
Это приведет к тому, что обработчик ПриВыполнениииЗапросаИИ будет блокировать все остальные обработчики, пока не завершится.
#2, 03 октября 2025 09:31
Вариант решения пока один - опять выстраивать все обработчики в очередь. Запрос к ИИ выполнять уже на стороне ТурбоКонф, после завершения обработчика, чтобы не держать очередь. Скрипт должен передавать заголовки и тело запроса.
#3, 03 октября 2025 09:33
(2) bolsun, Тогда нужно еще второе событие ПриПолученииОтветаИИ
#4, ред. 03 октября 2025 11:54
(3) tormozit, сколько по времени может занимать выполнение обработчика ПриВыполненииЗапросаИИ на твоей стороне? Это важно, т.к. он будет блокировать выполнение обработчиков ПриАктивизацииСтроки.
Если это может занимать продолжительное время, возможно стоит добавить файл признак, по аналогии t9.lck, что необходимо срочно прервать выполнение расчета.
#5, 03 октября 2025 11:55
Ну и t9.lck конечно тоже нужно отслеживать иначе это заблокирует вставку.
#6, ред. 03 октября 2025 11:57
(4) таким образом обработчики ИИ будут выполнятся только в свободное время, а если пользователь захочет это ускорить он может встать на строку ИИ и дождаться ответа.
Опять же если расчет занимает немного времени это будет излишним.
#7, ред. 03 октября 2025 14:21
(4) bolsun, чисто мой код до 100мс + выполнение хттп запроса до 1500мс. Сервер Напарника асинхронный режим запроса не предоставляет. Поэтому вежливо прервать ожидание ответа сервера невозможно.
#8, ред. 03 октября 2025 15:35
6.5.9407.31492
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
API
#9, 03 октября 2025 18:44
Тяжело без отладки понять такое.
AITimerOnTick System.InvalidOperationException: Неправильное имя заголовка. Убедитесь, что заголовки запросов используются с HttpRequestMessage, заголовки ответов — с HttpResponseMessage, а заголовки содержимого — с объектами HttpContent.
в System.Net.Http.Headers.HttpHeaders.CheckHeaderName(String name)
в System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
в TurboConf.Service.NewT9Form.'iTpJTx?b{//oo(2n1TSscJI%.MoveNext()
#10, 03 октября 2025 19:26
(9) tormozit, сверь код с примером или пришли полный
#11, 03 октября 2025 21:13
Ты написал расплывчато
//ЗаголовкиНапарника.Вставить("Content-Type", "application/json"); //Не нужно, будет установлено автоматическиА нужно было написать
//Нельзя устанавливать этот заголовок, т.к. он будет конфликтовать с устанавливаемым автоматически#12, ред. 03 октября 2025 21:14
(11) @bolsun В связи с этим прошу в Турбоконфе удалять этот заголовок или выдавать понятную ошибку.
#13, 04 октября 2025 00:23
Если в обработчике ПриВыполненииЗапросаИИТ9 сразу выполнить ВОзврат, то возникает ошибка
AITimerOnTick System.InvalidOperationException: Указан недопустимый URI запроса. URI запроса должен быть абсолютным URI, или необходимо задать BaseAddress.
в System.Net.Http.HttpClient.PrepareRequestMessage(HttpRequestMessage request)
в System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
в System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
в TurboConf.Service.NewT9Form.'iTpJTx?b{//oo(2n1TSscJI%.MoveNext()
#14, 04 октября 2025 00:26
(13) tormozit, используй Отказ = Истина.
#15, 04 октября 2025 00:29
(14) bolsun, чем в этих обработчиках отличается
СтандартнаяОбработка = Ложьот
Отказ = Истина?
#16, 04 октября 2025 00:35
(15) tormozit, Отказ = Истина - обработка запроса к ИИ прервется.
СтандартнаяОбработка = Ложь - запрос к серверу не будет выполнен, но следующие обработчики выполнятся.
#17, 04 октября 2025 17:18
(14) bolsun, проверил. Такая же ошибка
AITimerOnTick System.InvalidOperationException: Указан недопустимый URI запроса. URI запроса должен быть абсолютным URI, или необходимо задать BaseAddress.
в System.Net.Http.HttpClient.PrepareRequestMessage(HttpRequestMessage request)
в System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
в System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
в TurboConf.Service.NewT9Form.'iTpJTx?b{//oo(2n1TSscJI%.MoveNext()
#18, ред. 05 октября 2025 00:31
Исходная ошибка вернулась
ScriptEngine.Machine.RuntimeException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 11072 / Конструктор не найден (ТурбоКонф)}
ТурбоКонф = Новый ("ТурбоКонф");
---> 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)
Ссылка скрыта
#19, 05 октября 2025 00:39
(18) tormozit, ошибка возникает в другом месте.
ScriptEngine.Machine.RuntimeException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 11072
Не удалось выполнить скрипт ИРАдаптер->ПриОткрытииОкна
OneScript не поддерживает асинхронные вызовы.
Каждый вызов обработчика в T9, затирает контекст.
Что с этим делать пока не знаю.
#20, ред. 05 октября 2025 00:42
Только не понятно что делал обработчик ИР ПриОткрытииОкна, в момент вызова ПриАктивизацииСтрокиТ9 или ПриВыполненииЗапросаИИТ9. Там появилось окно Конфигуратор
#21, 05 октября 2025 00:45
Возможно подсказка была закрыта и мне требуется отменять все накопленные обработчики. В данный момент я их отменяю только при вставке.
#22, 05 октября 2025 00:47
Почему разработчки OneScript сделали весь контекст статическим, до сих пор удивляюсь.
#23, 05 октября 2025 09:48
(18) tormozit, больше не появлялась, т.е. после исправления только один раз появилась. Видимо какое то редкое сочетание условий нужно. Исходно она появлялась довольно часто.
#24, ред. 05 октября 2025 13:27
(19) воспроизвел ошибку, она возникала если были накоплены обработчики и при открытой подсказке вызывалось Ctrl+S. В случае появления окна "Конфигуратор" об ошибке срабатывал обработчик ПриОткрытииОкна, но его контекст затирал следующий обработчик из очереди. Добавлю отмену очереди при скрытии подсказки.
#25, 05 октября 2025 14:06
6.5.9409.28703
Критические изменения!
ПриВыполненииЗапросаИИТ9 теперь ПриОтправкеЗапросаИИT9
ПослеВыполненияЗапросаИИТ9 теперь ПриПолученииОтветаИИТ9
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#26, 05 октября 2025 14:18
Добавлены различные отсутствующие обработчики
t9_script_events.t9t
#27, 05 октября 2025 14:31
(26) bolsun, что делать с этим файлом? Почему ты его отдельно выложил? У меня его нет в папке Турбоконфа.
#28, ред. 05 октября 2025 14:39
(27) tormozit, нет в templates?
#29, 05 октября 2025 14:41
(28) bolsun, да есть. Теперь заменил файл.
#30, 01 декабря 2025 08:22
tormozit изменил статус на Закрыто