Замер: Paste time overall: 20243ms
Перезапуск Турбоконфа не решает проблему.
Воспроизвести можно в конфигурации ИР https://devtool1c.ucoz.ru/load/0-0-1-1-20
Надо выполнить команду "ИР Перейти к определению" на последнем слове строки Обработка.ирПоискДублейИЗаменаСсылок.Форма.Форма.ЭлементыФормы.ПолноеИмяОбъекта
Несколько версий Турбоконфа назад такой проблемы не было. В скрипте этот код вроде бы уже давно не менял.
Ссылка скрыта
#1, 27 июля 2024 13:25
Ты не делаешь ожидание окна поиска после Ctrl+F?
Вижу в логе, что вставка происходит при фокусе в дереве.
#2, ред. 27 июля 2024 15:43
(1) bolsun, было жесткое ожидание 100мс. Переделал все поиски в окнах на вызов такой функции
Теперь проблема не возникает. Но самому до этого догадаться довольно сложно. В очередной раз предлагаю подумать над доработкой API, чтобы избавить скриптописателя от этих мучений.
tormozit изменил статус на Закрыто
#3, 27 июля 2024 15:41
tormozit изменил статус на Открыто
#4, ред. 27 июля 2024 16:11
(2) tormozit, при чем тут АПИ не понимаю. Ты выполняешь вставку в процессе выполнения открытия окна. В этот момент конфигуратор не может обработать запрос UIA, что приводит к блокировке по таймауту. Как-то проверить или обойти это я не могу, т.к. именно при выполнении любого запроса через UIA, в этом случае и происходит зависание на 20с.
#5, ред. 27 июля 2024 16:33
Я бы добавил в функции нажатия клавиш параметр ЧислоМиллисекунд для ожидания смены окна, т.к. нажатия клавиш часто вызывают асинхронную смену активного элемента и в 90% нужно ждать завершение этой смены, т.е. синхронизироваться с изменениями в окне. Если этот параметр задан, то Турбоконф сам должен выполнять запоминание текущего ИД поля и ожидание его смены после нажатия.
#6, 27 июля 2024 16:22
(5) tormozit, тогда бы мой код выглядел значительно проще и догадаться до его написания самому было бы тоже заметно легче
#7, ред. 27 июля 2024 18:01
Аналогичный параметр логично будет добавить во все методы, которые могут открывать/закрывать окна
#8, 31 июля 2024 19:58
(7) tormozit, сегодня опять пролечил нестабильность кода этим приемом для ОткрытьМеню(). Это подтверждает правильность моего желания внести эту внутреннюю кухню внутрь обозначенных методов.
Почти уверен, что все остальные скриптописатели сами не догадаются до этого приема. Потому их код будет работать нестабильно, что они будут лечить жесткими паузами, из-за чего скрипты будут работать еще медленнее.
#9, 01 августа 2024 11:53
(8) tormozit, не все так просто. Не некоторых версиях платформы или на некоторых ОС невозможно всегда корректно получить RuntimeId, у некоторых элементов его нет, также для некоторых элементов это может приводить к зависанию конфигуратора.
#10, 01 августа 2024 13:25
(9) bolsun, с такими зависаниями кажется пока не сталкивался либо не понял их. В каком случае они происходят?
#11, 01 августа 2024 13:50
(10) tormozit, это происходит как я написал на некоторых легаси ОС, ты их видимо не используешь . Плюс в программе сделан обход этих случаев, но RuntimeID при этом будет одинаковый - Id родителя для всех дочерних элементов.
#12, ред. 01 августа 2024 14:00
Для легаси режима вызывается свой метод получения RuntimeId, достаточно сложный, с кучей проверок и обходов этой проблемы.