Имя: Пароль:
1C
1С v8
Как использовать внешнюю компоненту autoit для позиционирования окон
0 DmLo
 
29.09.17
14:06
Необходимо в 1с выводить несколько окон, позиционируя их определенным образом. Как я понял, для этого необходимо использовать внешние компоненты. Остановился на autoit, но, как ей пользоваться, не понятно. Подскажите пожалуйста
1 vis_tmp
 
29.09.17
14:12
А что это за окна?
Может, сделать  обработку показывающую эти данные?
2 luter-89
 
29.09.17
14:14
(0) А показ нескольких окон в последних версиях 8.3 не подойдет?
3 ildary
 
29.09.17
14:14
(0) почитать инструкцию, обратиться на русскоязычный форум auotit - не, это сложно. Пусть одинэсники отвечают, все равно они тыжепрограммисты.
4 DmLo
 
29.09.17
14:16
(2) Нет.
(3) Было бы время сидеть там, обратился бы. А тут наверняка кто-то уже с ней работал
5 ildary
 
29.09.17
14:29
(4) Ну я работал, никого не спрашивал, гуглил и читал форумы. Autoit - простейшая программа, как VB и 1С. Ты же на Мисте не спрашиваешь как установить конфигурацию?
6 Филиал-msk
 
29.09.17
14:30
(4) На тематическом форуме с этим никто не работал и у тебя нет для него времени. Но время для сидения на непрофильном по вопросу форуме у тебя есть и тут должны знать.
Я ничего не путаю в твоей логике?
7 ildary
 
29.09.17
14:34
(6) вечная тема "Сделайте за меня".
8 ildary
 
29.09.17
14:55
Кстати, вангую, что не взлетит - я вспомнил как на днях пытался автоматизировать нажимание кнопок при обновлении конфигурации - автоит сильно лажал, так как 1С в своих контролах не показывает всю нужную информацию (вроде Caption, не помню). Могу тот скрипт выложить сюда (он короткий), но комментировать его не буду - все операторы оттуда гуглятся на раз, нет там никакой магии.
9 DmLo
 
29.09.17
15:21
(8) если не сложно, скиньте строку с регистрацией внешней компоненты и сам скрипт, собственно
10 H A D G E H O G s
 
29.09.17
15:24
Никак. Никаких идентификаторов винды в окна не выводится
11 H A D G E H O G s
 
29.09.17
15:25
(8) нужную кнопку находил по координатам?
12 ildary
 
29.09.17
15:29
(9) я делал отдельное приложение - екзешник, который висит в трее винды и ловит окошки.


(10) вот-вот я о том же. Хорошая идея сделать кнопки "Далее" самонажимаемыми разбилась о то, что может быть запущено 2 конфигуратора, а в конфигураторе может быть открыто окно совсем другое, но с тем же классом.

(11) нет, по классу.
13 ildary
 
29.09.17
15:31
Вот собственно сам скрипт, но предупреждаю - он работает в весьма узких условиях, поэтому проще сказать, что он НЕ РАБОТАЕТ:

#include <Constants.au3>

_Main()


Func FirstWindow()

    $WinTitle = "[CLASS:V8TopLevelFrame]" ; окно конфигуратора

    While 1

        If WinExists( $WinTitle ) Then

            $hCtrl = ControlGetHandle( $WinTitle, "", "[CLASS:V8MDILocalFrame]" )
            If $hCtrl Then ExitLoop

        EndIf

        Sleep( 1000 ) ; 1 sec

    WEnd

    TrayTip( "Внимание!", "Окно обновления готово!", 5 * 60, $TIP_ICONASTERISK )
    Sleep( 5 * 60 * 1000 ) ; 5 min

EndFunc ;FirstWindow

Func ObjectWindow()

    $ObjWinTitle = "[CLASS:V8NewLocalFrameBaseWnd]" ; окно "Существуют объекты"

    While 1

        If WinExists( $ObjWinTitle ) Then

            $hCtrl = ControlGetHandle( $ObjWinTitle, "", "[CLASS:V8FormElement; INSTANCE:5]" ) ; окно "Существуют объекты"
            If $hCtrl Then ExitLoop

        EndIf

        Sleep( 1000 ) ; 1 sec

    WEnd

    WinActivate( $ObjWinTitle )

    $hCtrl = ControlGetHandle( $ObjWinTitle, "", "[CLASS:V8FormElement; INSTANCE:3]" ) ; Кнопка ОК в окне "Существуют объекты"
    If $hCtrl Then ; нажмем

        Send( "{ENTER}" ) ; ControlClick НЕ РАБОТАЕТ
        Sleep( 1000 )
        Send( "{ENTER}" )

    EndIf

    TrayTip( "Внимание!", "Пора нажимать кнопку сохранить!", 5 * 60, $TIP_ICONASTERISK )
    Sleep( 5 * 60 * 1000 ) ; 5 min

EndFunc ;ObjectWindow

Func NewData()

    $WinTitle = "Реорганизация информации"

    While 1

        If WinExists( $WinTitle ) Then ExitLoop

        Sleep( 1000 ) ; 1 sec

    WEnd

    TrayTip( "Внимание!", "Пора нажимать кнопку принять!", 5 * 60, $TIP_ICONASTERISK )
    Sleep( 5 * 60 * 1000 ) ; 5 min

EndFunc ;NewData


Func _Main()

   FirstWindow()

   ObjectWindow()

   NewData()

EndFunc ;_Main
2 + 2 = 3.9999999999999999999999999999999...