В ИР есть свое окно подсказки по параметрам вызова метода
ПоказатьПараметрыМетода
и оно открывается модально из скрипта "ИР адаптер", но не позволяет при этом редактировать код и обновлять подсказку при перемещении каретки.
Родную форму Турбоконф такого же вида я попытаюсь сделать, но сначала нужно обеспечить приход в нее события ПриИзмененииПозиции(). Режим генерации этого события хотелось бы включать такими способами
И он должен отключаться
Также это окно должно автоматически двигаться по вертикали вместе с кареткой (располагаться всегда под ней).
Реализуема ли такая схема?
#1, ред. 29 декабря 2023 08:48
Очень не хватает этого режима. Он есть у всех аналогов и в самом ИР в обычном приложении. Если у метода 5+ параметров и штатный анализатор конфигуратора его не понимает, то сейчас приходится по несколько раз вызывать модальную подсказку параметров ИР.
В идеале бы конечно хотелось открывать родное окно ИР как сейчас, но чтобы
tormozit изменил статус на Открыто
#2, ред. 04 июня 2024 07:29
(1) Продумал еще другие варианты. Теперь кажется что эта схема будет к тому же самой простой в реализации с обеих сторон (Турбоконф и адаптер).
#3, ред. 04 июня 2024 07:31
@bolsun видишь в схеме (2) трудно реализуемые места?
#4, 05 июня 2024 17:22
(3) tormozit, выглядит все костыльно. Нужна нормальная подсказка как например в T9.
#5, ред. 05 июня 2024 18:01
(4) bolsun, хотелось бы понять конкретно что тебе не нравится в предлагаемом подходе. Кажется проверку концепции сделать будет несложно
#6, 05 июня 2024 19:28
(5) tormozit, как минимум выглядеть будет странно, но это ладно.
Основная проблема - ТурбоКонф приостанавливается на время вызова внешнего окна, поэтому при редактировании не будут работать ни хоткеи, ни T9, ни все остальные функции.
#7, 05 июня 2024 20:40
(6) bolsun, основной проблемы нет, ведь я указал что окно открывается немодально, т.е. сразу после открытия окна управление возвращается потоку скрипта, а он сразу вернет управление Турбоконфу. Обновления окна будут происходить через событие ПриПеремещенииКаретки(), которое будет генерировать Турбоконф.
#8, 05 июня 2024 21:57
(7) tormozit, подчинение окна конфигуратору, тоже может вызывать побочные эффекты. Сколько бы раз я ни пробовал эту реализацию, все время что-то возникало. Мы даже в свое время отказались от этой реализации в методе НачатьВызовВнешнегоОкна.
#9, ред. 05 июня 2024 21:59
В общем, это даже если поверхностно взглянуть на предложенный механизм. Что еще возникнет в процессе, никто не знает.
#10, ред. 06 июня 2024 21:35
(8) bolsun, подчинение окна сделаю сам. Можешь сделать событие ПриПеремещенииКаретки? И желательно метод ПереместитьОкноПодКаретку(hWND)
#11, ред. 07 июня 2024 09:20
Сделал проверку концепции на своих костылях. Для работы требуется установленный Autohotkey.
Вызывай команду "Показать параметры метода". Откроется немодально моя форма подсказки. Клавишами Вправо/Влево перемещай каретку. Текущий параметр будет обновляться. Клавиша Escape закрывает окно подсказки. Для этого пришлось добавить опасные команды перехвата клавиш Escape/Left/Right.
RDT.os
Не увидел серьезных недостатков в этой концепции.
Чего не хватает в первую очередь:
Ну и хорошо бы обойтись без Autohotkey, т.к. через него 2 простые функции WinAPI зовутся. Ты легко мог бы добавить такой метод в свое API. Его реализация выглядит так
#12, ред. 07 июня 2024 09:11
Кстати сегодня в процессе отладки этой функции не меньше 10 раз столкнулся с ошибкой https://turboconf.ru/Tasks/9510 . Если избавиться от запуска скрипт Autohotkey, то еще и не будет потребности ее исправлять.
#13, 07 июня 2024 19:24
(11) tormozit,
Да я знаю как это сделать и пробовал несколько раз использовать. Всегда были побочки (залипания клавиш, глюки каретки и т.д.).
Поэтому еще раз, я против такого подхода.
#14, ред. 07 июня 2024 19:34
Я могу добавить эти методы, но завтра появится десять новых тикетов с непонятными глюками, на каждый нужно время, чтобы разобраться и выяснить что они вызваны этими модификациями.
Столько свободного времени у меня на это нет, проще сделать все через нормальную панель, которая будет работать предсказуемо и стабильно.
#15, ред. 07 июня 2024 20:19
Задача и так не простая.
Панель должна будет:
Это на первый взгляд, даже без учета вычисления содержимого подсказки и текущего параметра (это будет в обработчиках).
#16, ред. 08 июня 2024 08:08
(14) bolsun, тогда сделай хотя бы выполнение процедуры скрипта с задержкой, т.е. аналоги ПодключитьОбработчикОжидания и ОтключитьОбработчикОжидания. https://turboconf.ru/Tasks/9521
#17, ред. 08 июня 2024 10:52
(11) tormozit, Обширно протестировал этот подход. Нашел проблему. Смена активного поля внутри такого окна 1С приводит к исчезновению этого окна. Предположительно в окне есть внутренняя связь с родительским окном, которое в этот момент невидимо, а при смене фокуса идет какое то общение с родительским окном и переустановка каких то атрибутов от него.
Чтобы сделать такое окно снова видимым, пока нашел только способ - переоткрывать его.
Для главного сценария - пассивного использования этого окна - эта проблема не играет роли. Предполагаю варианты обхода: