При работе с несколькими информационными базами одновременно пользователи и разработчики часто сталкиваются с проблемой идентификации нужного окна на панели задач (в трее). По умолчанию платформа 1С:Предприятие добавляет в начало заголовка статичную фразу "1С:Предприятие -". Если окон открыто много, в прямоугольниках панели задач видна только эта надпись, а самое важное — имя конкретной базы — обрезается. В этой статье мы разберем по шагам, как изменить заголовок системы, как переместить название базы в начало и как управлять заголовком не только в режиме «Предприятие», но и в «Конфигураторе».
Для современных версий платформы 1С:Предприятие 8.3, использующих управляемые формы, наиболее правильным и эффективным методом является использование встроенной функции УстановитьЗаголовокКлиентскогоПриложения(). Рассмотрим подробнее, как применить этот метод, чтобы добиться желаемого результата.
Нам необходимо внедрить код в модуль управляемого приложения. Это позволит системе при каждом запуске устанавливать тот заголовок, который нам удобен. Проанализируем пример кода:
Процедура ПриНачалеРаботыСистемы()
// Устанавливаем произвольный текст, который будет отображаться в заголовке
ИмяБазы = "Бухгалтерия (ТЕСТ)";
Пользователь = ИмяПользователя();
НовыйЗаголовок = ИмяБазы + " [" + Пользователь + "]";
УстановитьЗаголовокКлиентскогоПриложения(НовыйЗаголовок);
КонецПроцедуры
Важно понимать разницу: метод УстановитьЗаголовокКлиентскогоПриложения в управляемом приложении работает более гибко, чем старые методы. Если мы передаем в него пустую строку или специфический текст, платформа позволяет нам переопределить стандартное поведение. Выясним причину, почему это удобно: такой подход не требует снятия конфигурации с поддержки, если использовать механизм расширений.
Если вы работаете с устаревшими конфигурациями или используете обычные формы (например, УПП 1.3), нам потребуется метод УстановитьЗаголовокСистемы(). Посмотрим на нюансы его работы. По умолчанию этот метод просто добавляет текст после стандартной фразы "1С:Предприятие -". Однако, если мы хотим видеть имя базы в начале, нам придется использовать небольшую хитрость.
Разберем пример реализации в модуле обычного приложения:
Процедура ПриНачалеРаботыСистемы()
// В обычном приложении заголовок часто склеивается
ТекстЗаголовка = "ПРОДАКШН: Управление торговлей";
УстановитьЗаголовокСистемы(ТекстЗаголовка);
КонецПроцедуры
Стоит отметить, что в некоторых версиях платформы 8.2 и 8.3 (в режиме обычного приложения) полностью избавиться от префикса "1С:Предприятие" штатными программными методами бывает сложно, так как платформа принудительно добавляет свой бренд. В этом случае мы рекомендуем рассмотреть вариант изменения свойств самой конфигурации.
Иногда решение проблемы лежит не в области программирования, а в правильной настройке метаданных. Рассмотрим ситуацию, когда нам нужно изменить заголовок без написания скриптов. Для этого откроем Конфигуратор и перейдем в свойства корневого объекта конфигурации.
Платформа часто берет данные для заголовка именно из Синонима конфигурации. Если вы измените синоним, например, на "УПП (Рабочая)", то и в заголовке окна вы увидите это изменение. Однако помните, что изменение синонима в основной конфигурации может потребовать монопольного доступа и повлиять на обновление типовых решений. Поэтому для типовых баз лучше использовать программные методы или расширения.
Существует еще один "ленивый", но эффективный способ изменить заголовок окна без вмешательства в код базы. Это использование параметров запуска. Разберем по шагам, как это настроить:
При добавлении базы в список или создании ярлыка для запуска 1С, вы можете дописать в поле дополнительных параметров запуска ключ /Z. Рассмотрим пример строки запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\WorkBase" /Z "ГЛАВНАЯ БАЗА"
В данном случае текст, указанный после /Z, будет добавлен в заголовок окна. Это позволяет визуально разделить разные инстансы программы, даже если это одна и та же конфигурация, запущенная под разными именами для удобства оператора.
Вопрос изменения заголовка окна самого Конфигуратора является более сложным, так как встроенных методов УстановитьЗаголовокКонфигуратора в языке 1С не существует. Выясним, какие инструменты позволяют решить эту задачу.
Для профессиональной разработки часто используется проект Snegopat (Снегопат). Это мощная надстройка над Конфигуратором, которая позволяет выполнять произвольные скрипты на языке JavaScript или VBScript внутри среды разработки. В Снегопате есть готовые скрипты, которые перехватывают системные сообщения Windows и позволяют динамически менять заголовок окна Конфигуратора, добавляя туда путь к базе, ветку хранилища или любую другую техническую информацию.
Если же установка Снегопата невозможна, проанализируем использование внешней библиотеки Miracle или инструментов автоматизации типа AutoIt. Эти утилиты работают на уровне операционной системы. Скрипт AutoIt может в фоновом режиме отслеживать окна с классом V8TopLevelFrame и принудительно менять их текст через WinAPI функции WinSetTitle. Рассмотрим логику такого скрипта:
; Пример логики скрипта AutoIt (псевдокод)
While 1
$handle = WinGetHandle("[CLASS:V8TopLevelFrame]")
If $handle Then
$currentTitle = WinGetTitle($handle)
If StringInStr($currentTitle, "Конфигуратор") Then
WinSetTitle($handle, "", "РАЗРАБОТКА: " & $currentTitle)
EndIf
EndIf
Sleep(5000) ; Проверка каждые 5 секунд
WEnd
Если ваша база находится на поддержке и вы не хотите вносить изменения в основную конфигурацию, создайте Расширение. Это самый современный и безопасный метод. Посмотрим на алгоритм действий:
ПриНачалеРаботыСистемы с аннотацией &После.УстановитьЗаголовокКлиентскогоПриложения.Такой подход гарантирует, что при обновлении основной конфигурации ваши настройки заголовка не "слетят", а информативность работы в трее останется на высоком уровне. Для безопасного выполнения подобных работ в пакетном режиме удобно использовать инструмент для автоматической архивации и обновления 1С. Мы настоятельно рекомендуем выводить в заголовок не только имя базы, но и текущий режим (ТЕСТ/РАБОЧАЯ), чтобы минимизировать риск случайного удаления данных в боевой базе.
Подводя итог, можно сказать, что хотя 1С и навязывает свой бренд в заголовке, у разработчика есть масса инструментов — от простых параметров запуска до мощных WinAPI скриптов — чтобы сделать интерфейс удобным и информативным. Для автоматизации действий пользователя в интерфейсе также может применяться платформа для создания программных роботов RPA.