Очень долгое выполнение ТурбоКонф.КликнутьПоЭлементу()

tormozit Закрыто

В ИР адаптере есть функция ПерейтиПоСсылкеСтрокиМодуля, в которой я кликаю по строке точки останова в списке точек останова с путем вызова ТурбоКонф.КликнутьПоЭлементу().
Почему то часто это занимает больше секунды.
Воспроизвести можно установив каретку на любой внешний вызов метода общего модуля и нажав CTRL+F12 (ИР Перейти к определению)

Причем и в других командах, где я использовал эту функцию, она тоже так долго работает, особенно в команде "Найти последнее изменение метода" (требуется хранилище конфигурации). Но те команды редко используются. А "Перейти к определению" - часто используемая.

Комментарии

tormozit
#1, ред. 07 октября 2023 11:01

Аналогичная команда "Перейти к определению" из моей программы ClipAngel почти всегда работает быстрее. Ее исходный код я уже предоставлял тебе.


bolsun
#2, 07 октября 2023 14:35

(1) tormozit, скинь еще раз свой код, посмотрю.


bolsun
#3, 07 октября 2023 14:37

Хотя я не использую ТурбоКонф.КликнутьПоЭлементу() в своей версии


tormozit
#4, 07 октября 2023 15:00

Код открытия строки модуля из ClipAngel

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


bolsun
#5, 07 октября 2023 15:40

Сравнил время перехода функции в скрипте и моей встроенной

В скрипте 3900 мс

Функция ТК

2400 мс


bolsun
#6, 07 октября 2023 15:41

Время в ClipAngel понятно, замерить не могу. Но в целом в ТК такая же логика.


bolsun
#7, 07 октября 2023 15:42

Поэтому рекомендую использовать штатную функцию TurboConf, добавлю ее в API


tormozit
#8, ред. 07 октября 2023 15:51

Я бы давно использовал твою функцию, если бы она была мне доступна. Но еще она должна поддерживать все типы модулей, включая внешние обработки, модули расширений, модули приложения.


bolsun
#9, 07 октября 2023 15:54

Внешние поддерживает, модули расширений не знаю, но добавить всегда можно.


tormozit
#10, ред. 08 октября 2023 11:18

Сылка модуля внешней обработки выглядит так
{Ф::C:\TerminalDisk\ОтважныйБобр.epf::ВнешняяОбработкаяяя1.Форма.Форма.Форма(11:Функ,3)}:

Она не поддерживается новой функцией API ОткрытьМодуль(Ссылка). Либо я не понял как ей передать такое имя модуля (по сути имя файла внешней обработки).
Модули расширений тоже не поддерживает. Некорректно работает при первом обращении к модулю и оставляет за собой мусорную точку останова %2FContent%2FFiles%2F1165DFE919CB05373C26DFFD93BA26DF9DD382C5%2FkM9sYriNZN.mp4

По поводу основной проблемы. Функция API КликнутьПоЭлементу() имеет намного более широкий спектр применения чем частное решение ОткрытьМодуль(). И ускорение ее работы (иногда отрабатывает быстро) ускорило бы сразу много команд.


bolsun
#11, ред. 08 октября 2023 12:28

(10) tormozit, модули расширений поддерживаются, формат - {ИнструментыРазработчикаTormozit ОбщийМодуль.ирКлиент.Модуль(20084)}

Мусорная точка остается, т.к.переход не происходит (по другой причине)

Для внешних обработок нужно будет передать отдельный параметр - путь к файлу

ТурбоКонф.ОткрытьМодуль("{ВнешняяОбработкаяяя1.Форма.Форма.Форма(11)}", "C:\TerminalDisk\ОтважныйБобр.epf");

В следующей версии - добавлю в API

КликнутьПоЭлементу() - скинь свой код клика, в твоем примере есть все, кроме этого. SetFocusByClick(cell) - нет метода.


tormozit
#12, 08 октября 2023 12:39

Функция SetFocusByClick из ClipAngel
Ссылка скрыта


bolsun
#13, 08 октября 2023 12:41

На первый взгляд у меня тоже самое.


bolsun
#14, 08 октября 2023 12:43

Но клик у меня происходит через InputSimulator, может он медленно кликает - проверю.


bolsun
#15, 08 октября 2023 12:48

Нет, кликает быстро. Но общее время обработки больше секунды. Думаю причина в перехвате событий мыши самим ТК, проверю.


bolsun
#16, 08 октября 2023 13:03

Да, дело было в этом. При клике срабатывало событие мыши (OnMouseButtonUp), в результате возникала дополнительная задержка на 1000 мс. Теперь время клика сократилось с 1030 мс до 30 мс.


tormozit
#17, 08 октября 2023 20:13

Проверил. Теперь КликнутьПоЭлементу() работает быстро.


tormozit
#18, 08 октября 2023 20:14

tormozit изменил статус на Закрыто


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