Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
tormozit #1, 24 декабря 2025 23:25
Похоже это дополнительное время уходит на перемещение каретки, вызванное наличием в шаблоне маркеров <!>/<?>.
0
tormozit #2, ред. 24 декабря 2025 23:43
Вот лог вставки шаблона "Сообщить(<!>);". Кажется слишком долгим выполнять после вставки смешение каретки а 2 позиции правее за 200мс (сравнивал со вставкой шаблона "Сообщить();").
Получилось быстрее вроде бы, т.к. обработку клавиш окном конфигуратора не могу замерить честно.
Затем попробовал в том же обработчике такой код ТурбоКонф.ВыделитьТекст(ПолеТекстаПрограммы.мПозицияВТексте, ПолеТекстаПрограммы.мПозицияВТексте);
Тоже получилось быстрее (без лишних 200мс) - тут уж точно все честно, т.к. метод синхронный.
0
bolsun #4, ред. 25 декабря 2025 12:44
Шаблон с маркером <!>, в отличие от просто метода с параметрами Сообщить(), где достаточно нажать влево, использует универсальное перемещение, за константное время, через метод ВыделитьТекст, т.к. новая позиция может быть далеко от каретки. А также он проверяет новый текст на правильность вставки (вспомни, что позиция может установится неправильно, если переносы строк некорректны).
0
bolsun #5, 25 декабря 2025 12:45
(4) возможно для частных случаев, где каретка рядом с новой позицией, достаточно перейти нажатиями клавиш.
0
bolsun #6, ред. 25 декабря 2025 13:00
(4) bolsun, при универсальном методе также учитывается, что табуляция после вставки шаблона может заменяться на пробелы, и может быть нестандартной ширины.
0
bolsun #7, 25 декабря 2025 12:59
Можно попробовать добавить проверку, что если расстояние между концом шаблона и маркером меньше какого-то количества символов и не содержит табуляции и переносы строк, то выполнить переход через нажатия клавиш.
0
tormozit #8, ред. 25 декабря 2025 13:14
(4) bolsun, в (3) я показал что тест с чистым ВыделитьТекст() не приводит к 200мс задержке. Значит дело в дополнительных проверках. Если они не меняют положение каретки, их лучше вынести в асинхронный метод, который выполнится после вставки и не будет задерживать работу пользователя.
0
tormozit #9, ред. 25 декабря 2025 13:18
В общем, для подавляюще частого сценария вставки шаблона - фрагмента без переносов строк и табуляций - хотелось бы отключить все лишние действия. Получим таким образом 2-х кратное ускорение вставки шаблона.
0
bolsun #10, 25 декабря 2025 13:18
(9) tormozit, есть примеры таких шаблонов? Я вижу подавляющее большинство, с переносами строк и табуляциями.
0
tormozit #11, 25 декабря 2025 13:19
(10) bolsun, да, у меня все методы вставляются через шаблон "ИмяМетода(<!>)". Думал что у тебя так же.
0
bolsun #12, ред. 25 декабря 2025 13:21
(11) tormozit, у меня все методы вставляются без маркера <!> за около нулевое время перемещения каретки, внутрь скобок.
0
bolsun #13, 25 декабря 2025 13:22
(11) tormozit, использовать шаблоны для этого - неправильно.
0
tormozit #14, ред. 25 декабря 2025 13:27
(13) bolsun, Вроде уже много раз это обсуждали. Я получаю полную информацию о методе, включая наличие у него параметров, только при вставке, т.е. когда пользователь вставляет его из списка. Тут только либо шаблон, либо ПослеВставки я сам перемещаю каретку (3). Выходит что правильно (3)?
Вроде бы про ПослеВставки ты тоже писал, что неправильно там интерактив делать.
Перемещение каретки для шаблона теперь осуществляется клавишами и без дополнительных проверок, если расстояние перемещения меньше 10 символов и не содержит переносов строк и табуляций.
(15) bolsun, проверил. Работает.
tormozit изменил статус на Закрыто
0
tormozit #17, 26 декабря 2025 12:13
При вставке шаблона ПолноеИмя()<!>
новая оптимизация не срабатывает
tormozit изменил статус на Открыто
0
tormozit #18, ред. 28 декабря 2025 15:49
Еще не вижу оптимизации при вставке шаблона "Иначе" в середину "ИначеЕсли". Турбоконф зачем то вставляет "Иначе " вместо "Иначе" и затем удаляет крайний пробел. Если же вставлять не в середину слова, то такой шаблон вставляется на 100мс быстрее. Почему так? fKvDNDy7yW.mp4
Ссылка скрыта
0
bolsun #19, 30 декабря 2025 12:44
(18) tormozit, пробел добавляется для корректной вставки, т.к. близлежащее слово мешает определять перемещения каретки и правильно вставлять текст.
0
tormozit #20, 30 декабря 2025 13:34
(19) bolsun, не понял. Можешь на примере показать? Или другими словами что плохо случится, если вставить без пробела сразу?
0
bolsun #21, 30 декабря 2025 13:39
(20) tormozit, ты же понимаешь, что мало вставить текст, нужно еще подготовится к вставке, как минимум удалить слово слева, дождаться реакции каретки и т.д.? Так вот слово рядом мешает это делать.
0
tormozit #22, ред. 30 декабря 2025 13:54
(21) bolsun, Если отправить CTRL+BackSpace, то удалится часть слова слева от каретки, а правая останется. Пробел вставлять для этого не нужно. Пробовал так?
#1, 24 декабря 2025 23:25
Похоже это дополнительное время уходит на перемещение каретки, вызванное наличием в шаблоне маркеров <!>/<?>.

#2, ред. 24 декабря 2025 23:43
Вот лог вставки шаблона "Сообщить(<!>);". Кажется слишком долгим выполнять после вставки смешение каретки а 2 позиции правее за 200мс (сравнивал со вставкой шаблона "Сообщить();").
[24.12.25 22:56:31:615] Замер: Paste time: 115ms
[24.12.25 22:56:31:615] Set AllowMouseEvents = False
[24.12.25 22:56:31:615] Set PasteForm.IsVisible = False
[24.12.25 22:56:31:616] Set ClipCursorPosition =
[24.12.25 22:56:31:616] OnKeyDown Right
[24.12.25 22:56:31:616] Clear _TurboApiSingletone.Instance.LastKeyEventArgs (TurboApi.IsProcess = true)
[24.12.25 22:56:31:616] Received await = Right IsProcess=True, IsQueueInProgress=False, (143,0005 ms) fg=280a06 title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация, KeyData=Right
[24.12.25 22:56:31:616] KeyboardHookManagerOnKeyUp(): Right
[24.12.25 22:56:31:617] Received await = Right IsProcess=True, IsQueueInProgress=False, (1,0001 ms) fg=280a06 title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация, KeyData=Right
[24.12.25 22:56:31:617] Paste time: 122ms
[24.12.25 22:56:31:631] 13ms
[24.12.25 22:56:31:631] IsPatternSupported(30040): True
[24.12.25 22:56:31:632] GetText6()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:632] GetUIAutomationInfo()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:632] GetUIAutomationCachedInfo()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:632] CurrentDocumentRuntimeId=
[24.12.25 22:56:31:639] curFg=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация, curFg=2624006
[24.12.25 22:56:31:639] controlType: документ
[24.12.25 22:56:31:639] name:
[24.12.25 22:56:31:649] text.Length=1472565
[24.12.25 22:56:31:649] selectedRange.Length=1
[24.12.25 22:56:31:661] result.CurrentRangeText.Length=918585
[24.12.25 22:56:31:661] result.Position=918585
[24.12.25 22:56:31:661] doc.Position = 918585
[24.12.25 22:56:31:661] CurrentDocumentRuntimeId=42 2624006 4 545334844
[24.12.25 22:56:31:661] Set LastDocument for pid=45452 42 2624006 4 545334844
[24.12.25 22:56:31:661] Set SetLastElement for wnd=2624006
[24.12.25 22:56:31:661] GetUIAutomationCachedInfo() 29ms, total calls 26
[24.12.25 22:56:31:661] T9CurrentControlType=документ
[24.12.25 22:56:31:703] Select time overall: 35ms
[24.12.25 22:56:31:703] GetUIAutomationInfoAsync()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:703] GetUIAutomationCachedInfoAsync()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:704] GetUIAutomationCachedInfo()... title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация,curFg=2624006,fg=2624006
[24.12.25 22:56:31:704] CurrentDocumentRuntimeId=
[24.12.25 22:56:31:713] curFg=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация, curFg=2624006
[24.12.25 22:56:31:713] controlType: документ
[24.12.25 22:56:31:713] name:
[24.12.25 22:56:31:725] text.Length=1472565
[24.12.25 22:56:31:725] selectedRange.Length=1
[24.12.25 22:56:31:735] result.CurrentRangeText.Length=918583
[24.12.25 22:56:31:735] result.Position=918583
[24.12.25 22:56:31:735] doc.Position = 918583
[24.12.25 22:56:31:735] CurrentDocumentRuntimeId=42 2624006 4 545334844
[24.12.25 22:56:31:735] Set LastDocument for pid=45452 42 2624006 4 545334844
[24.12.25 22:56:31:735] Set SetLastElement for wnd=2624006
[24.12.25 22:56:31:735] GetUIAutomationCachedInfo() 31ms, total calls 27
[24.12.25 22:56:31:747] Goto position time: 129ms
[24.12.25 22:56:31:747] Move cursor to location time: 0ms
[24.12.25 22:56:31:749] Запускаем обработчик ПослеВставкиЗначенияТ9 в скрипте ...
[24.12.25 22:56:31:749] ExecuteScript user_scripts\RDT.os, entryPoint=ПослеВставкиЗначенияТ9, title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация
[24.12.25 22:56:31:750] StopAITimer()
[24.12.25 22:56:31:750] Отменяем накопленные обработчики, т.к. подсказка была закрыта.
[24.12.25 22:56:31:750] Set IsProcess: False
[24.12.25 22:56:31:750] Set ClipCursorPosition =
[24.12.25 22:56:31:750] Set PasteForm.IsVisible = False
[24.12.25 22:56:31:750] Set ProtectedWindow = 0
[24.12.25 22:56:31:750] Queue 1:
[24.12.25 22:56:31:750]
[24.12.25 22:56:31:750] Send
[24.12.25 22:56:31:750] KeyboardHookManagerOnKeyUp(): Return
[24.12.25 22:56:31:751] Received await = Return IsProcess=False, IsQueueInProgress=True, (133,9991 ms) fg=280a06 title=[КА1 серверная] - Общий модуль ирОбщий: Модуль - Конфигуратор - КомплекснаяАвтоматизация, KeyData=Return
[24.12.25 22:56:31:751] Key up Return has passed to window 280a06
[24.12.25 22:56:31:751] Send queue completed: 1
[24.12.25 22:56:31:751] _needUpdateCurrentText = True
[24.12.25 22:56:31:751] Закрываем оверлей...
[24.12.25 22:56:31:751] Замер: TOTAL PASTE TIME: 361ms
#3, ред. 25 декабря 2025 13:10
Вместо шаблона "Сообщить(<!>);" попробовал передавать шаблон ""Сообщить();" и в обработчике ПослеВставкиЗначенияТ9 выполнил код смещения каретки
Получилось быстрее вроде бы, т.к. обработку клавиш окном конфигуратора не могу замерить честно.
Затем попробовал в том же обработчике такой код
ТурбоКонф.ВыделитьТекст(ПолеТекстаПрограммы.мПозицияВТексте, ПолеТекстаПрограммы.мПозицияВТексте);Тоже получилось быстрее (без лишних 200мс) - тут уж точно все честно, т.к. метод синхронный.
#4, ред. 25 декабря 2025 12:44
Шаблон с маркером <!>, в отличие от просто метода с параметрами Сообщить(), где достаточно нажать влево, использует универсальное перемещение, за константное время, через метод ВыделитьТекст, т.к. новая позиция может быть далеко от каретки. А также он проверяет новый текст на правильность вставки (вспомни, что позиция может установится неправильно, если переносы строк некорректны).
#5, 25 декабря 2025 12:45
(4) возможно для частных случаев, где каретка рядом с новой позицией, достаточно перейти нажатиями клавиш.
#6, ред. 25 декабря 2025 13:00
(4) bolsun, при универсальном методе также учитывается, что табуляция после вставки шаблона может заменяться на пробелы, и может быть нестандартной ширины.
#7, 25 декабря 2025 12:59
Можно попробовать добавить проверку, что если расстояние между концом шаблона и маркером меньше какого-то количества символов и не содержит табуляции и переносы строк, то выполнить переход через нажатия клавиш.
#8, ред. 25 декабря 2025 13:14
(4) bolsun, в (3) я показал что тест с чистым ВыделитьТекст() не приводит к 200мс задержке. Значит дело в дополнительных проверках. Если они не меняют положение каретки, их лучше вынести в асинхронный метод, который выполнится после вставки и не будет задерживать работу пользователя.
#9, ред. 25 декабря 2025 13:18
В общем, для подавляюще частого сценария вставки шаблона - фрагмента без переносов строк и табуляций - хотелось бы отключить все лишние действия. Получим таким образом 2-х кратное ускорение вставки шаблона.
#10, 25 декабря 2025 13:18
(9) tormozit, есть примеры таких шаблонов? Я вижу подавляющее большинство, с переносами строк и табуляциями.
#11, 25 декабря 2025 13:19
(10) bolsun, да, у меня все методы вставляются через шаблон "ИмяМетода(<!>)". Думал что у тебя так же.
#12, ред. 25 декабря 2025 13:21
(11) tormozit, у меня все методы вставляются без маркера <!> за около нулевое время перемещения каретки, внутрь скобок.
#13, 25 декабря 2025 13:22
(11) tormozit, использовать шаблоны для этого - неправильно.
#14, ред. 25 декабря 2025 13:27
(13) bolsun, Вроде уже много раз это обсуждали. Я получаю полную информацию о методе, включая наличие у него параметров, только при вставке, т.е. когда пользователь вставляет его из списка. Тут только либо шаблон, либо ПослеВставки я сам перемещаю каретку (3). Выходит что правильно (3)?
Вроде бы про ПослеВставки ты тоже писал, что неправильно там интерактив делать.
#15, ред. 25 декабря 2025 14:22
(14) tormozit,
Перемещение каретки для шаблона теперь осуществляется клавишами и без дополнительных проверок, если расстояние перемещения меньше 10 символов и не содержит переносов строк и табуляций.
6.6.9490.29270
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#16, 25 декабря 2025 15:39
(15) bolsun, проверил. Работает.
tormozit изменил статус на Закрыто
#17, 26 декабря 2025 12:13
При вставке шаблона
ПолноеИмя()<!>новая оптимизация не срабатывает
tormozit изменил статус на Открыто
#18, ред. 28 декабря 2025 15:49
Еще не вижу оптимизации при вставке шаблона "Иначе" в середину "ИначеЕсли". Турбоконф зачем то вставляет "Иначе " вместо "Иначе" и затем удаляет крайний пробел. Если же вставлять не в середину слова, то такой шаблон вставляется на 100мс быстрее. Почему так?
fKvDNDy7yW.mp4
Ссылка скрыта
#19, 30 декабря 2025 12:44
(18) tormozit, пробел добавляется для корректной вставки, т.к. близлежащее слово мешает определять перемещения каретки и правильно вставлять текст.
#20, 30 декабря 2025 13:34
(19) bolsun, не понял. Можешь на примере показать? Или другими словами что плохо случится, если вставить без пробела сразу?
#21, 30 декабря 2025 13:39
(20) tormozit, ты же понимаешь, что мало вставить текст, нужно еще подготовится к вставке, как минимум удалить слово слева, дождаться реакции каретки и т.д.? Так вот слово рядом мешает это делать.
#22, ред. 30 декабря 2025 13:54
(21) bolsun, Если отправить CTRL+BackSpace, то удалится часть слова слева от каретки, а правая останется. Пробел вставлять для этого не нужно. Пробовал так?
#23, 30 декабря 2025 13:55
(22) tormozit, нет, попробую.
#24, 31 декабря 2025 12:13
(18) tormozit, убрал вставку пробела в этом случае и перешел на использование Ctrl+Backspace
6.6.9496.25497
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#25, 31 декабря 2025 14:09
(24) bolsun, Проверил. Теперь в этом случае вставляется без задержки.
Но избыточная задержка (17) еще актуальна.
#26, 31 декабря 2025 15:33
(25) tormozit, нужен способ воспроизведения, у меня нет такого шаблона (17)
#27, 31 декабря 2025 16:15
(26) bolsun, Включи ИР адаптер и вставь слово "ПолноеИмя" из списка
Метаданные.Справочники[0].#28, 09 января 2026 11:33
(17) tormozit,
Исправил, но смысл этого шаблона мне не понятен. Каретка и так в этом положении после вставки.
6.6.9505.23988
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#29, 09 января 2026 11:38
(28) bolsun, смысл в сгенерированных шаблонах может не всегда быть.
#30, 09 января 2026 11:41
tormozit изменил статус на Закрыто