Войти

Показать полную графическую версию : Отловить кнопки


DJ Mogarych
18-09-2017, 10:55
Добрый день, уважаемые коллеги!

Подскажите, пожалуйста - по каким критериям можно идентифицировать кнопку в 1С, чтобы обеспечить надёжное её нажатие?

Есть 1С Итилиум, в котором нужно для закрытия нарядов нажимать некие кнопки (см. скриншот: 148167).
Но проблема в том, что у кнопок непостоянное значение Instance. То есть, положим, я с помощью AutoIt Windows Info получил значение типа

Title: Итилиум 4.4
Class: V8TopLevelFrameSDI
>>>> Control <<<<
Class: V8FormElement
Instance: 74
ClassnameNN: V8FormElement74
Advanced (Class): [CLASS:V8FormElement; INSTANCE:74]
ID: 274378548
ControlClick Coords: 10, 10


Затем настраиваю клик
ControlClick($hWin, '', '[CLASS:V8FormElement; INSTANCE:74]', 'left', 1, 10, 10)

Но это сразу же перестаёт работать, потому что при открытии следующего наряда (или даже при открытии того же наряда заново) та же самая кнопка может иметь значение
>>>> Window <<<<
Title: Итилиум 4.4
Class: V8TopLevelFrameSDI

>>>> Control <<<<
Class: V8FormElement
Instance: 99
ClassnameNN: V8FormElement99
Advanced (Class): [CLASS:V8FormElement; INSTANCE:99]
ID: 273451860
ControlClick Coords: 10, 10


В связи с этим вопросы:

Как надёжно ловить эти кнопки, чтобы щёлкать по ним? Есть ли что-то универсальное, чтобы указывать в ControlClick? Табами получается тоже ненадёжно, периодически промахивается.
Есть ли какой-то способ ждать, кроме Sleep, предположим, чтобы была проверка, доступна ли эта кнопка или нет? А то интерфейс периодически тормозит, и паузы то слишком большие, то скрипт не дожидается и шарашит дальше мимо кассы.


Спасибо!

-TRM-
18-09-2017, 14:59
Может в это направление лучше смотреть - типа ControlClick("Итилиум 4.4","","V8FormElement74")

DJ Mogarych
18-09-2017, 17:52
Ну а в другой раз он V8FormElement99, в том-то и дело.




© OSzone.net 2001-2012