В макете управляемой формы на любом элемент управления Турбоконф выдает тип элемента "панель"

tormozit Баг платформы

Активируем кнопку/поле/флажок/таблицу в редакторе управляемой формы и вызываем команду скрипта.

  1. В ней вычисляем тип элемента
ТурбоКонф.ПолучитьТипТекущегоЭлемента()
ТурбоКонф.ПолучитьНазваниеТипаТекущегоЭлемента()

Получаем всегда "панель", а ожидался реальный тип элемента. Причем ПолучитьНазваниеТипаТекущегоЭлемента() возвращает перечисление вместо строки.
2. В ней вычисляем
ТурбоКонф.ПолучитьИмяЭлемента()
Получим пустое имя, а ожидалось реальное имя.

Комментарии

bolsun
#1, 06 марта 2025 12:08

При активации элементов редактора УФ, 1С в UIAutomation не отдает этот элемент как текущий. При некоторых манипуляциях кликами по элементам, можно добиться, что фокус меняется и тогда АПИ отдает верный элемент, кроме метода ПолучитьНазваниеТипаТекущегоЭлемента (в нем видимо ошибка).


bolsun
#2, 06 марта 2025 12:13

Это же видно, если проверять смену фокуса через программу Inspect, при выбранном обновлении при смене фокуса.

Понял как воспроизвести.


bolsun
#3, 06 марта 2025 12:13

Таким образом это баг платформы.


bolsun
#4, 06 марта 2025 12:40

Update:
ТурбоКонф.ПолучитьИмяЭлемента() - также возвращает элемент правильно, т.к. такой активный элемент UIAutomation отдает платформа

Если использовать ПолучитьИмяТекущегоЭлемента, то в нем будет значение основанное на событии смены фокуса (правильное) кроме случая с когда оно не обновляется из-за бага платформы.


tormozit
#5, 06 марта 2025 13:42

Смотри второй снимок окна. Там видно что механизм UIAutomation получил текущий элемент правильно - кнопка "Записать". Вот хочется, чтобы бы тем же путем и Турбоконф его получал, если это не требует больших переделок.


bolsun
#6, ред. 06 марта 2025 14:40

(5) tormozit, я выше написал, что ТК тоже правильно получает.
Эта программа получает элемент под указателем, а не текущий. Если кликнуть быстро и не дать ему время, увезти указатель на другой элемент. То он и покажет другой элемент под указателем.
Проверяй на Inspect, отключив получение элемента под указателем, а только при смене фокуса.

И кликай так как я показал в примере.


tormozit
#7, ред. 07 марта 2025 20:28

Утилита Inspect устарела и часто зависает. Поэтому я ею давно уже не пользуюсь.
В современной утилите есть режим захвата элемента наведением указателя, но я его отключил. К тому же у элемента включен признак Focusable. Это видно даже на первом снимке. Сделал новые снимки для надежности.


bolsun
#8, 08 марта 2025 14:22

(7) tormozit, процитирую еще раз, больше мне нечего добавить

При активации элементов редактора УФ, 1С в UIAutomation не отдает этот элемент как текущий. При некоторых манипуляциях кликами по элементам, можно добиться, что фокус меняется и тогда АПИ отдает верный элемент

из-за бага платформы, событие смены фокуса срабатывает не всегда

наглядный пример, активный элемент - Команда3, фокус в UIA не сменился


bolsun
#9, 08 марта 2025 14:25

Вот ТурбоКонф также определяет тип элемента правильно, когда платформа обрабатывает правильно


tormozit
#10, ред. 08 марта 2025 14:29

Да, похоже это плавающая проблема платформы, т.к. иногда у меня и через Турбоконф тоже правильно срабатывало.


bolsun
#11, 09 марта 2025 13:46

bolsun изменил статус на Баг платформы


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