Изменение заголовка окна конфигуратора 1С

Небольшой скрипт, меняющий заголовок окна 1С в режиме конфигуратора.

При запуске нескольких копий конфигуратора бывает сложно на лету понять, какая база открыта в данный момент. Это приводит к потере времени и даже к ошибкам. Во избежание подобных проблем, был написан скрипт на AutoIT. Данный скрипт выбирает все процессы 1cv8.exe, анализирует командную строку запуска и, если запущен конфигуратор и в названии базы есть слова "test, copy, тест, копия", меняет заголовок окна на строку "Тестовая база" + %имя базы%.

Прилагается скомпилированный файл и текст скрипта. Для установки распакуйте exe файл и поместите его в папку автозагрузки Windows.

P.S. Данная утилита не противоречит лицензионному соглашению с 1С, т.к. не вносит какие-либо изменения в код ПРОГРАММНОГО ПРОДУКТА, содержимое баз данных и других наборов данных, в которых система хранит информацию.

20 Comments

  1. dj_serega

    А можно обойтись без «test, copy» и тд? Что бы всегда подменяло заголовок конфигуратора?

    Допустим на «Синоним базы, имя кластера, имя базы» ?

    Reply
  2. pumbaE

    (1) Да достаточно 70 и 81 строку закоментировать.

    Reply
  3. Поручик

    Хорошая вещь. Вот будут лишние мани, скачаю исходник.

    Reply
  4. kraynev-navi

    Вот если бы цвет окна менялся, то было бы существенно интереснее. Ибо цветовая дифференциация штанов конфигураторов работает без «подключения головы», когда требуется переключение между окнами. ТС, может сбацаешь?

    Reply
  5. DrAku1a

    Несколько простых функций WinAPI…

    Reply
  6. dtripleh

    Можно было просто в свойствах базы поменять синоним

    Reply
  7. karapuzzzz

    (4) kraynev-navi, первое впечатление об AutoIT говорит об использовании WinAPI. А она, в свою очередь, «может все». Но сама WinAPI представляет собой бездонный набор функций, документацию на которые очень сложно искать. MSDN, конечно, содержит все что надо, но кто пользовался знает, что ситуацию это не спасает.

    Автору однозначно плюс, т.к. это хороший пендаль реализовать свою идею по дифференциации конфигураторов.

    Reply
  8. karapuzzzz

    (6) dtripleh, Это позволит отличить УТ от Розницы и бухгалтерии. А как отличить УТ рабочую от базы для разработки и еще кучи тестовых?

    Reply
  9. dj_serega

    (8) karapuzzzz, Когда 2 разработчика и в дополнение есть хранилище конфигурации 🙂

    Reply
  10. kraynev-navi

    (7) karapuzzzz, в свое время пытался сделать как раз цветом. Но моих познаний не хватило на изменение у конфигураторов. Менял цвет у тотал командера, но тоже как-то криво. Прекратил изыскания в связи с отсутствием времени.

    Reply
  11. saiten

    Так это делается на пауэршелле:

    $Api = Add-Type -MemberDefinition @’
    [DllImport(«user32.dll»)]
    public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, String lParam);
    ‘@ -Name ‘Api’ -PassThru
    
    $WM_SETTEXT = 0x000C
    $Expr = «Конфигуратор»
    $NewExpr = «Something»
    
    
    get-process|where{$_.mainWindowTItle -match $Expr}|%{$Api::SendMessage($_.MainWindowHandle,$WM_SETTEXT,0,($_.mainWindowTItle -replace $Expr,$NewExpr))}

    Показать

    При желании можно и иконку в панели задач поменять. На счет цвета не уверен, но, думаю, можно извратиться.

    Reply
  12. dtripleh

    (8) karapuzzzz, как вариант в тестовой базе поменять синоним на «УТ тестовая 1/2/3 и т.д»

    Reply
  13. Muxomop

    Идея классная, считаю 1с должны сделать возможность установки заголовка конфигуратора базовой, по аналогии с режимом предприятия. У меня данный скрипт не работает, поскольку в командной строке вообще нет никаких параметров (Win7, x64)

    Reply
  14. pinkz80

    (13) Muxomop, командная строка в любом случае должна быть. Можно посмотреть с помощью утилиты procmon или far manager.

    Reply
  15. Muxomop

    (14) Я не говорил, что у меня нет командной строки. У меня в ней нет параметров, на основании которых работает ваш скрипт. Вот так у меня выглядит командная строка «C:Program Files (x86)1cv88.3.5.1517in1cv8.exe» . Конфигуратор запущен обычным образом, без помощи запускалок, стартеров и т.д.

    Reply
  16. karapuzzzz

    (12) dtripleh, Если все базы подключены к одному хранилищу, то поменять не получится.

    Reply
  17. zqzq

    Переписал кусок кода, чтобы только имя базы выводил, без «Тестовая база» и без левых параметров типа путь автозапускаемой обработки, режимы разрешения и пр. мусора (в исходном скрипте заменить строки 67-83):

         For $i = 1 To $aList[0][0]
    $CLine = StringUpper( _WinAPI_GetProcessCommandLine($aList[$i][1]) )
    If StringInStr( $CLine, «DESIGNER», $STR_NOCASESENSE) Then
    ;ConsoleWrite($CLine & @CRLF)
    $ArrCL = StringSplit( $CLine, ‘/IBNAME»‘ ,$STR_ENTIRESPLIT )
    If $ArrCL[0] >= 2 Then
    ;ConsoleWrite($ArrCL[2] & @CRLF)
    $ArrFin = StringSplit( $ArrCL[2], ‘»‘ ,$STR_ENTIRESPLIT )
    If $ArrFin[0] >= 1 Then
    $NewTitle = $ArrFin[1]
    ;ConsoleWrite($NewTitle & @CRLF)
    $ID =($aList[$i][1])
    WinSetTitle(_GetHwnd($ID),»»,$NewTitle)
    EndIf
    EndIf
    EndIf
    Next
    

    Показать

    Суть: выводит строку между /IBNAME» и « — синоним базы.

    Reply
  18. kraynev-navi

    (4) Сделал свою программку с индикацией цветом http://infostart.ru/public/462685/

    Reply
  19. pinkz80

    (18) kraynev-navi, спасибо за развитие идеи.

    Reply
  20. 7OH

    Есть просьба — поправьте пожалуйста так, чтобы после смены возвращало содержимое буфера обмена назад.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *