Привет форумчане!
Столкнулся с проблемой при попытке автоматизировать стандартное действие в САП.
Требуется в окне "карточки абонента" найти строку с оборудованием и присвоить определённое значение полю.
Присвоение действие элементарное с точки зрения программирования, а вот поиск...
Проблема в том, что с точки зрения скрипт-рекордера все элементы древа обрабатываются одинаково:
Code:
session.findById("wnd[0]/shellcont/shell/shellcont/shell").DoubleclickNode "000000001964"
Различаются только цифры в конце - это порядковый номер элемента и он не зависит от уровня вложения, только от номера строки начиная с верха древа.
Однако на самом деле элементы древа совершенно разные и реакция на их открытие тоже, открывается новое окно, иногда нет.
Я написал код с контролем ошибок, который перебором находит нужный пункт, однако из-за того что вложенных элементов в древе может быть больше тысячи (при том что единиц оборудования больше десяти тысяч) процесс поиска очень долгий.
Самый очевидный вариант - искать по наименованию элемента типа 853625 - СЭ ЦЭ6803В 220/380В 10-100А 1(011070087001242), где в скобках как раз идентификатор оборудования по которому ищется совпадение, но как его запросить?
Порывшись на форуме попытался написать код, но результат нулевой.
Code:
mycontrol = oSession.findByName("wnd[0]/shellcont/shell/shellcont/shell", "000000000005")
A = mycontrol.Text
Свой код с перебором выложил в отдельном сообщении ниже, может кому пригодится (это вряд ли)
Всех неравнодушных прошу помочь.