Как программно изменить заголовок окна в 1С:Предприятие 8?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Основным инструментом для решения нашей задачи в платформе 1С:Предприятие 8 является глобальный метод УстановитьЗаголовокСистемы. Этот метод позволяет заменить стандартную строку в верхней части окна на произвольный текст. Проанализируем синтаксис этого метода:


// Синтаксис:
// УстановитьЗаголовокСистемы(<ТекстЗаголовка>)

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

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

Для того чтобы заголовок менялся сразу при запуске программы, нам необходимо найти подходящую точку входа. Рассмотрим структуру модулей в управляемом приложении. Наиболее подходящим местом является Модуль управляемого приложения. В нем существуют специализированные обработчики событий начала работы.

Разберем по шагам процесс внесения изменений:

  1. Откройте конфигуратор вашей базы.
  2. В дереве конфигурации нажмите правой кнопкой мыши на корневой узел и выберите "Открыть модуль управляемого приложения".
  3. Найдите или создайте предопределенную процедуру ПриНачалеРаботыСистемы.
  4. Вставьте вызов метода с нужными вам данными.

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


Процедура ПриНачалеРаботыСистемы()
    
    // Получаем текущего пользователя системы
    ТекущийПользовательФИО = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя;
    
    // Формируем строку заголовка
    НовыйЗаголовок = "ООО 'Ромашка' | Пользователь: " + ТекущийПользовательФИО;
    
    // Применяем изменения
    УстановитьЗаголовокСистемы(НовыйЗаголовок);
    
КонецПроцедуры

Динамическое изменение заголовка в процессе работы

Иногда требуется менять заголовок не только при старте, но и в зависимости от действий пользователя. Например, при выборе конкретной организации в учетной политике или при переходе между разделами. Поскольку УстановитьЗаголовокСистемы является методом глобального контекста, мы можем вызывать его из любого клиентского кода.

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


// Пример функции для динамического обновления
Процедура ОбновитьЗаголовокПрограммы(ДополнительныйТекст = "") Экспорт
    БазовыйТекст = "Управление торговлей";
    Если ЗначениеЗаполнено(ДополнительныйТекст) Тогда
        Результат = БазовыйТекст + " [" + ДополнительныйТекст + "]";
    Иначе
        Результат = БазовыйТекст;
    КонецЕсли;
    УстановитьЗаголовокСистемы(Результат);
КонецПроцедуры

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

Для того чтобы сделать заголовок более информативным, посмотрим, какие системные данные мы можем использовать. Часто бывает полезно вывести имя сервера или имя базы данных, особенно если у вас есть "Рабочая" и "Тестовая" копии.

Рассмотрим подробнее код, который поможет отличить тестовую базу от рабочей, чтобы пользователи не совершали ошибок в данных:


Процедура ПриНачалеРаботыСистемы()
    
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
    // Простейшая проверка на наличие слова 'TEST' в строке соединения
    Если Найти(ВРег(СтрокаСоединения), "TEST") > 0 Тогда
        Префикс = "!!! ТЕСТОВАЯ БАЗА !!! ";
    Иначе
        Префикс = "РАБОЧАЯ БАЗА | ";
    КонецЕсли;
    
    Заголовок = Префикс + КраткоеИмяОрганизации();
    УстановитьЗаголовокСистемы(Заголовок);
    
КонецПроцедуры

Важные нюансы и ограничения

Работая с заголовком системы, следует учитывать несколько технических аспектов:

Разница между заголовком системы и заголовком формы

Важно не путать УстановитьЗаголовокСистемы с заголовком конкретной формы. Когда вы открываете справочник или документ, у формы есть свойство Заголовок. Платформа 1С обычно комбинирует заголовок системы и заголовок активной формы в формате "ЗаголовокФормы - ЗаголовокСистемы".

Выясним причину, почему иногда заголовок не меняется: если в коде конфигурации (например, в типовых решениях от 1С) используется механизм БСП (Библиотека стандартных подсистем), заголовок может переустанавливаться стандартными подсистемами. В таких случаях стоит искать настройки в разделе "Администрирование" - "Общие настройки", где часто присутствует поле "Заголовок программы". Однако программный метод, описанный выше, перекроет эти настройки, если будет вызван позже.

Заключение

Мы рассмотрели эффективный способ кастомизации интерфейса 1С под нужды пользователя. Использование УстановитьЗаголовокСистемы в сочетании с анализом параметров сеанса и строкой соединения позволяет создать удобную рабочую среду, минимизировать ошибки пользователей при работе в разных базах и повысить общую информативность системы. Помните, что хороший заголовок должен быть лаконичным и содержать только действительно важную в данный момент информацию.

← На главную