При активной разработке или поддержке нескольких однотипных информационных баз 1С программисты часто сталкиваются с проблемой путаницы. Когда в панели задач открыто пять или шесть окон Конфигуратора, стандартный заголовок не позволяет быстро определить, какая именно база активна в данный момент. Это может привести к критическим ошибкам, например, внесению изменений в рабочую базу вместо тестовой. В этой статье мы подробно разберем все доступные методы идентификации окон, от простых настроек платформы до использования средств автоматизации.
Разберем самый простой и популярный способ, который не требует установки дополнительного программного обеспечения. Платформа 1С позволяет задать синоним для всей конфигурации, который будет отображаться в заголовке окна.
Рассмотрим пошагово процесс настройки:
Синоним.Проанализируем важный нюанс: изменение синонима влияет не только на Конфигуратор, но и на режим Предприятие. Это название будет видеть и конечный пользователь. Если в вашей организации это не приветствуется, или если конфигурация находится на поддержке и изменение свойств корня нежелательно, перейдем к следующим методам.
Выясним, как можно визуально отличить базы, не вчитываясь в текст заголовка. В свойствах того же корня конфигурации есть возможность загрузить собственный Логотип.
Если для каждой базы (или типа баз) подготовить маленькую картинку разного цвета (например, красный квадрат для "Рабочей", зеленый — для "Разработки"), то на панели задач рядом с названием окна появится соответствующий значок. Это позволяет мгновенно ориентироваться в окнах даже при свернутой панели задач.
Если мы не хотим менять метаданные конфигурации, мы можем воспользоваться внешними средствами, которые управляют окнами операционной системы Windows через WinAPI. Одним из таких инструментов является AutoIt.
Рассмотрим пример логики работы такого скрипта. Скрипт в фоновом режиме отслеживает появление окон с классом или заголовком, содержащим "Конфигуратор", и принудительно дописывает в заголовок путь к базе. Посмотрим на пример упрощенного кода для подобной автоматизации:
; Пример логики на языке AutoIt (упрощенно)
While 1
$list = WinList("[REGEXPTITLE:.*Конфигуратор.*]")
For $i = 1 To $list[0][0]
$title = $list[$i][0]
If Not StringInStr($title, " - [") Then
; Здесь можно добавить логику получения пути из реестра или файлов настроек
WinSetTitle($list[$i][1], "", "БАЗА: ТЕСТОВАЯ | " & $title)
EndIf
Next
Sleep(5000) ; Проверка каждые 5 секунд
WEnd
Важно помнить, что для корректной работы таких утилит в современных версиях Windows может потребоваться запуск от имени администратора, так как окна Конфигуратора могут иметь повышенные привилегии.
Для профессиональных разработчиков существует мощный инструмент — Снегопат. Это расширение для Конфигуратора 1С, которое предоставляет массу сервисных функций, включая гибкую настройку заголовка окна.
В настройках Снегопата можно указать маску, по которой будет формироваться заголовок. Например, выводить имя базы из списка запуска, версию платформы или путь к каталогу. Это избавляет от необходимости вручную менять синонимы в каждой базе.
Проанализируем развитие платформы. Начиная с версий 8.3.15 и выше, компания 1С улучшила информативность заголовков. В ряде случаев (особенно при использовании Alt+Tab) операционная система подхватывает дополнительные данные о процессе.
Также стоит обратить внимание на настройки панели задач Windows. Если отключить режим "Группировать кнопки панели задач", то каждое окно Конфигуратора будет занимать отдельное место с видимым началом заголовка. В сочетании с Методом 1 это дает наилучший результат для быстрой навигации.
Если вы не хотите устанавливать AutoIt или платные надстройки, можно написать небольшой PowerShell-скрипт, который будет выполняться в фоне. Разберем пример сценария, который ищет процессы 1С и обновляет их заголовки:
# Пример PowerShell скрипта
$windows = Get-Process | Where-Object {$_.MainWindowTitle -like "*Конфигуратор*"}
foreach ($win in $windows) {
$currentTitle = $win.MainWindowTitle
if ($currentTitle -notlike "*[ID:*") {
# Логика определения ID базы может быть сложной,
# здесь для примера просто добавляем ID процесса
$newTitle = "[PID: $($win.Id)] " + $currentTitle
# Требуется использование WinAPI через Add-Type для реального переименования
}
}
Подведем итог:
Наиболее стабильным и "штатным" способом является изменение Синонима в свойствах конфигурации. Однако, если вы работаете с типовыми решениями на поддержке или распределенными базами, лучше рассмотреть вариант с внешними утилитами автоматизации или специализированными надстройками вроде Снегопата. Это позволит сохранить чистоту метаданных и при этом обеспечит комфортную работу с любым количеством открытых окон.