Позиционируется в списке, но не открывает главу синтакс-помощника

vigor Закрыто

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

Комментарии

tormozit
#1, 25 сентября 2024 10:57

Опиши действия пользователя.
tormozit изменил статус на Открыто


vigor
#2, ред. 25 сентября 2024 13:56

33ZwMy6.mp4

В первый раз, когда пробовал записать - всё открылось. Потом, закрывал адаптер, открывал - уже ошибка.

Ошибка:

ScriptEngine.Machine.ExternalSystemException: {Модуль D:\1S\BSL\TURBOCONF HUB\TurboConf_RDT 6.1\user_scripts\RDT.os / Ошибка в строке: 1259 / Внешнее исключение (System.Runtime.InteropServices.COMException): Время ожидания операции истекло. (Исключение из HRESULT: 0x80131505)}
ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 1000, Истина);
---> System.Runtime.InteropServices.COMException: Время ожидания операции истекло. (Исключение из HRESULT: 0x80131505)
в TurboConf.HostApplication.Api.WaitForCurrentElementChanged(String currentRuntimeId, Int32 timeout, Boolean throwException)
в lambda_method(Closure , Api , IValue[] )
в ScriptEngine.Machine.Contexts.AutoContext`1.CallAsProcedure(Int32 methodNumber, IValue[] arguments)
в ScriptEngine.Machine.MachineInstance.ResolveMethodProc(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)


tormozit
#3, 25 сентября 2024 16:45

Попробуй заменить 1000 на 2000


vigor
#4, 25 сентября 2024 18:24

Ни 2000, ни 3000 не срабатывает.

 ScriptEngine.Machine.ExternalSystemException: {Модуль D:\1S\BSL\TURBOCONF HUB\TurboConf_RDT 6.1\user_scripts\RDT.os / Ошибка в строке: 1259 / Внешнее исключение (System.Runtime.InteropServices.COMException): Время ожидания операции истекло. (Исключение из HRESULT: 0x80131505)}    
> 	ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 3000, Истина);
>  ---> System.Runtime.InteropServices.COMException: Время ожидания операции истекло. (Исключение из HRESULT: 0x80131505)

Открывается глава СП, если в строке 1258 вызвать Enter 2 раза:
ТурбоКонф.Клавиша(Клавиши.Enter, 2);

при этом, дальше всё равно та же ошибка


tormozit
#5, 25 сентября 2024 18:26

Тогда нужен лог Турбоконфа.


vigor
#6, 25 сентября 2024 18:39

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

  1. Запустил ТК
  2. Нажал Ctrl -Space
  3. Дождался сообщения о времени подключения адаптера
  4. Встал на слово "Найти" - вызвал турбокнопку (Alt-P)
  5. Вызвал команду


tormozit
#7, 25 сентября 2024 23:21

Посмотрел все материалы. Воспроизвести не смог. Из лога не удалось понять в чем проблема.
@bolsun, нужна твоя помощь


tormozit
#8, 25 сентября 2024 23:26

Вероятно как то связано с проблемой https://turboconf.ru/Tasks/9620


bolsun
#9, ред. 25 сентября 2024 23:33

(8) tormozit, насколько я понял, скорее всего, как я уже говорил метод ЖдатьСменуТекущегоЭлемента (WaitForCurrentElementChanged) в разных дочерних окнах может вызывать ошибку и он в этом случае ненадежен. Когда окно закрывается UIAutomation не может обработать запрос и вызывает исключение по таймауту.


tormozit
#10, 25 сентября 2024 23:36

@vigor, пробуй заменить Турбоконф.ЖдатьСменуТекущегоЭлемента() на Турбоконф.Ждать(1000)


vigor
#11, 26 сентября 2024 07:41

Так работает. Даже Ждать(50) работает. И с одним нажатием Enter.


tormozit
#12, 26 сентября 2024 07:54

@bolsun в логе я вижу, что заданные в параметре 3000мс не выжидаются и ошибка выдается сразу. Кажется тут что то некорректно работает внутри самого метода ЖдатьСменуТекущегоЭлемента.

[25.09.24 19:32:33:423] -------------------------------------------UIAutomation Focus Changed = Универсальные коллекции значений/Таблица значений/КоллекцияКолонокТаблицыЗначений/Методы/Найти
[25.09.24 19:32:33:426] Error: Не удалось выполнить скрипт ИРАдаптер->СинтаксПомощник
ScriptEngine.Machine.ExternalSystemException: {Модуль D:\1S\BSL\TURBOCONF HUB\TurboConf_RDT 6.1\user_scripts\RDT.os / Ошибка в строке: 1259 / Внешнее исключение (System.Runtime.InteropServices.COMException): Событие не смогло вызвать ни одного из абонентов (Исключение из HRESULT: 0x80040201)}
ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 3000, Истина);
---> System.Runtime.InteropServices.COMException: Событие не смогло вызвать ни одного из абонентов (Исключение из HRESULT: 0x80040201)
в TurboConf.HostApplication.Api.WaitForCurrentElementChanged(String currentRuntimeId, Int32 timeout, Boolean throwException)
в lambda_method(Closure , Api , IValue[] )
в ScriptEngine.Machine.Contexts.AutoContext`1.CallAsProcedure(Int32 methodNumber, IValue[] arguments)
в ScriptEngine.Machine.MachineInstance.ResolveMethodProc(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)
[25.09.24 19:32:33:426] Set IsProcess: False


tormozit
#13, 26 сентября 2024 08:01

@vigor пробуй такой вариант

Процедура НайтиСтрокуВОкне(Знач ИскомаяСтрока) Экспорт
	СтарыйИД = ТурбоКонф.ПолучитьRuntimeIdСтрокой();
	ТурбоКонф.КонтролКлавиша(Клавиши.F);
	ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 1000, Истина);
	//ТурбоКонф.ЖдатьОкно("Поиск", 1000, Истина); // Не работает
	ТурбоКонф.УстановитьЗначение(ИскомаяСтрока);
	//ТурбоКонф.ВставитьТекст(ИскомаяСтрока);
	СтарыйИД = ТурбоКонф.ПолучитьRuntimeIdСтрокой();
	ТурбоКонф.Клавиша(Клавиши.Enter);
	Попытка
		ТурбоКонф.ЖдатьСменуТекущегоЭлемента(СтарыйИД, 1000, Истина);
	Исключение
		// Возникает непонятная ошибка https://turboconf.ru/Tasks/9760
		ТурбоКонф.Ждать(100);
	КонецПопытки;
КонецПроцедуры


vigor
#14, ред. 26 сентября 2024 09:13

Так срабатывает.


tormozit
#15, 26 сентября 2024 08:17

(14) vigor, создавай заявку


vigor
#16, ред. 26 сентября 2024 09:12

(15) tormozit,
п.с. на 8-й секунде видео из поста (14), если замедлить, появляется модальное окно "Строка не найдена!". Может из-за этого как-то теряется фокус при ожидании смены окна?


tormozit
#17, 26 сентября 2024 09:07

(16) vigor, какого видео? Тут уже 2 видео. Удали лишние сообщения из этой заявки, чтобы не путать читателей.
Я в обоих видео не увидел окно "Строка не найдена". Сделай снимок кадра с отметкой времени.


vigor
#18, ред. 26 сентября 2024 09:20

(17) tormozit,
Поправил сообщение 16.
Скрин с видео прикрепил. Отметка времени - внизу справа скрина. Смотрел с сильным замедлением.


tormozit
#19, 26 сентября 2024 09:21

(18) vigor, так и задумано


vigor
#20, 26 сентября 2024 09:39

Тогда ок. С учетом изменения кода из (13), закрываю.
vigor изменил статус на Закрыто


bolsun
#21, 26 сентября 2024 11:09

(12) tormozit, если вызвать ЖдатьСменуТекущегоЭлемента сразу после закрытия модального окна (я так понял это происходит), то платформа не сможет ответить на вызов UIAutomation и будет выдано исключение.
Как вариант могу попробовать просто игнорировать подобную ошибку в методе ЖдатьСменуТекущегоЭлемента и продолжать ждать дальше.


bolsun
#22, 26 сентября 2024 22:43

(21) bolsun, добавил обработку этого исключения в 6.2.9036.1013
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg

Если есть возможность проверьте, осталась ли такая ошибка.
bolsun изменил статус на Открыто


vigor
#23, 27 сентября 2024 08:00

(22) bolsun, Проверил (убрав правки из (13)) - работает.
vigor изменил статус на Закрыто


tormozit
#24, 29 сентября 2024 19:45

(13) tormozit, внес эту правку в адаптер 1.74


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