Как программно изменить заголовок окна в 1С 8.3?

Программист IT и автоматизация бизнеса
← На главную

В процессе разработки и сопровождения систем на базе 1С:Предприятие часто возникает необходимость идентифицировать запущенный экземпляр программы. Это особенно актуально, когда пользователь или администратор работает одновременно с несколькими базами данных (например, "Рабочая", "Тестовая", "Копия"). Стандартного названия конфигурации в заголовке окна бывает недостаточно для оперативного ориентирования. В данной статье мы проанализируем способы программного управления заголовком системы, разберем синтаксис необходимых функций и посмотрим на практические примеры реализации этой задачи.

Где настраивается статический заголовок?

Прежде чем переходить к коду, давайте вспомним, что базовое имя приложения задается в свойствах самой конфигурации. Если мы откроем конфигуратор и вызовем свойства корневого узла (самый верхний элемент дерева конфигурации), мы увидим поле Заголовок. Значение, введенное туда, будет отображаться в заголовке окна по умолчанию. Однако этот метод не позволяет изменять текст в зависимости от условий, таких как имя сервера или текущая дата.

Использование метода УстановитьЗаголовокСистемы

Для динамического изменения текста в верхней части окна платформой предусмотрен метод УстановитьЗаголовокСистемы(). Этот метод доступен на клиенте и позволяет мгновенно обновить надпись в заголовке главного окна приложения.

Давайте разберем по шагам, как работает этот метод. Синтаксис функции крайне прост:

УстановитьЗаголовокСистемы(СтрокаЗаголовка);

Параметр СтрокаЗаголовка — это обычная строка, которая заменит текущий текст. Важно понимать, что этот метод не просто добавляет текст к существующему названию, а полностью переопределяет его. Рассмотрим пример, где мы хотим добавить к названию программы текущий режим работы:


Процедура ПриНачалеРаботыСистемы()
    ТекстЗаголовка = "Бухгалтерия предприятия (ТЕСТОВАЯ БАЗА)";
    УстановитьЗаголовокСистемы(ТекстЗаголовка);
КонецПроцедуры

Автоматическое определение информационной базы

Чтобы не прописывать название базы вручную для каждой копии, мы можем проанализировать строку соединения с информационной базой и выводить её часть в заголовок. Это позволит системе автоматически подставлять имя базы или путь к папке в заголовок окна. Для этого воспользуемся функцией СтрокаСоединенияИнформационнойБазы().

Давайте рассмотрим пример реализации такой логики в модуле управляемого приложения:


Процедура ПриНачалеРаботыСистемы()
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
    
    // Попробуем выделить имя базы для файлового варианта или имя сервера для клиент-серверного
    Если Найти(СтрокаСоединения, "File=") > 0 Тогда
        // Обработка файлового пути
        ПутьКБазе = Сред(СтрокаСоединения, 7, СтрДлина(СтрокаСоединения) - 8);
        ЗаголовокОкна = "Файловая база: " + ПутьКБазе;
    ИначеЕсли Найти(СтрокаСоединения, "Srvr=") > 0 Тогда
        // Обработка серверного варианта
        ПозицияСервера = Найти(СтрокаСоединения, "Srvr=");
        ПозицияБазы = Найти(СтрокаСоединения, "Ref=");
        ИмяБазы = Сред(СтрокаСоединения, ПозицияБазы + 5, СтрДлина(СтрокаСоединения) - ПозицияБазы - 6);
        ЗаголовокОкна = "Сервер: " + ИмяБазы;
    КонецЕсли;

    УстановитьЗаголовокСистемы(ЗаголовокОкна);
КонецПроцедуры

В данном примере мы выясним причину, по которой заголовок стал более информативным: теперь пользователь сразу видит, с каким ресурсом он работает, что сводит к минимуму риск внесения правок в "боевую" базу по ошибке.

Особенности работы в управляемых формах

В режиме управляемого приложения (1С 8.3) код по изменению заголовка чаще всего размещается в МодульУправляемогоПриложения в обработчике события ПриНачалеРаботыСистемы. Поскольку это клиентское событие, вызов УстановитьЗаголовокСистемы() отработает корректно.

Если же вам требуется изменить заголовок в процессе работы (например, при переключении каких-то внутренних режимов или при открытии специфических отчетов), вы можете вызвать эту же функцию из любого клиентского кода. Однако помните, что частое обновление заголовка может быть избыточным.

Рассмотрим подробнее ситуацию, когда заголовок нужно сбросить к стандартному виду. Для этого достаточно передать в функцию пустую строку или неопределенное значение:


УстановитьЗаголовокСистемы(""); // Возвращает заголовок из метаданных конфигурации

Использование параметров запуска

Иногда полезно передавать специфический заголовок прямо при запуске программы через ярлык или командную строку. 1С позволяет считывать параметры запуска с помощью функции ПараметрЗапуска. Проанализируем ситуацию: администратор создает ярлык для пользователей с параметром /C "ОТДЕЛ ПРОДАЖ".

Тогда код в 1С будет выглядеть следующим образом:


Процедура ПриНачалеРаботыСистемы()
    Если ЗначениеЗаполнено(ПараметрЗапуска) Тогда
        УстановитьЗаголовокСистемы("1С:Предприятие - " + ПараметрЗапуска);
    КонецЕсли;
КонецПроцедуры

Взаимодействие с объектом СистемныеУстановки

В некоторых старых версиях платформы или специфических сборках разработчики пытаются найти объект СистемныеУстановки. Однако для версии 8.3 основным и наиболее стабильным методом остается именно УстановитьЗаголовокСистемы(). Стоит отметить, что этот метод влияет только на текущий сеанс пользователя. Если один пользователь изменил заголовок программно, у других пользователей заголовок останется прежним (если у них не сработал тот же самый программный код).

Резюме по шагам реализации

Подводя итог, выделим основные этапы внедрения динамического заголовка в вашу конфигурацию:

  1. Откройте конфигуратор и перейдите в Модуль управляемого приложения.
  2. Найдите или создайте процедуру ПриНачалеРаботыСистемы.
  3. Определите логику формирования строки (например, используя ИмяПользователя(), ТекущаяДата() или СтрокаСоединенияИнформационнойБазы()).
  4. Вызовите метод УстановитьЗаголовокСистемы(), передав в него сформированную строку.
  5. Обновите конфигурацию базы данных и проверьте результат при запуске тонкого или толстого клиента.

Посмотрим на пример комплексного заголовка, который включает в себя имя пользователя и версию конфигурации:


ВерсияКонфиг = Метаданные.Версия;
ИмяЮзера = ИмяПользователя();
Текст = "Рабочее место: " + ИмяЮзера + " (v" + ВерсияКонфиг + ")";
УстановитьЗаголовокСистемы(Текст);

Использование таких простых инструментов значительно повышает удобство работы пользователей и снижает количество ошибок, связанных с человеческим фактором при работе в многопользовательской среде с множеством баз данных.

← На главную