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

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

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

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

Основным инструментом для решения нашей задачи в платформе 1С:Предприятие 8.3 является встроенный метод УстановитьЗаголовокСистемы(). Этот метод позволяет динамически менять текст, который пользователь видит в самой верхней части окна приложения (Title bar). Рассмотрим подробнее синтаксис и особенности применения этого метода.

Метод УстановитьЗаголовокСистемы() доступен в контексте клиентского приложения. Он принимает один параметр — строку, которая и станет новым заголовком. Важно понимать, что этот заголовок будет действовать в течение всего сеанса работы пользователя, пока не будет вызван повторно с другим значением или пока программа не будет перезапущена.

Реализация в модуле управляемого приложения

Чтобы заголовок устанавливался автоматически при каждом входе пользователя в систему, нам необходимо использовать обработчики событий глобального модуля. В управляемом приложении для этих целей идеально подходит МодульУправляемогоПриложения. Выясним причину, почему именно здесь: выполнение кода в процедуре ПриНачалеРаботыСистемы гарантирует, что заголовок будет установлен сразу после того, как среда окружения будет инициализирована, но до того, как пользователь начнет активные действия.

Посмотрим на пример базовой реализации установки заголовка:


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

В данном примере мы разберем следующую логику: сначала мы определяем строковую переменную для названия базы, затем получаем имя текущего пользователя через объект ПользователиИнформационнойБазы и объединяем их в одну строку. Результат передается в метод УстановитьЗаголовокСистемы.

Динамическое получение имени информационной базы

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

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


Функция ПолучитьИмяБазыИзСтрокиСоединения() Экспорт
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
    // Обычно строка имеет вид "File="C:\Base";" или "Srvr="ServerName";Ref="BaseName";"
    // Напишем простую логику парсинга для демонстрации
    Если Найти(СтрокаСоединения, "Ref=") > 0 Тогда
        // Для клиент-серверного варианта
        Начало = Найти(СтрокаСоединения, "Ref=") + 5;
        Конец = Найти(Сред(СтрокаСоединения, Начало), ";") - 2;
        Возврат Сред(СтрокаСоединения, Начало, Конец);
    Иначе
        // Для файлового варианта
        Возврат "Файловая база";
    КонецЕсли;
КонецФункции

Используя такую функцию, мы можем сделать заголовок "умным", адаптирующимся под текущее расположение базы данных.

Работа с параметрами сеанса для заголовка

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

Разберем по шагам рекомендуемую схему работы:

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

Пример кода в модуле приложения с использованием параметров сеанса:


Процедура ПриНачалеРаботыСистемы()
    Попытка
        ТекстОрганизации = ПараметрыСеанса.ТекущаяОрганизацияНаименование;
        Заголовок = "1С:ERP - " + ТекстОрганизации;
        УстановитьЗаголовокСистемы(Заголовок);
    Исключение
        // На случай, если параметр не инициализирован
        УстановитьЗаголовокСистемы("1С:Предприятие 8.3");
    КонецПопытки;
КонецПроцедуры

Особенности работы в различных режимах запуска

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

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

Практические советы по оформлению заголовков

При разработке системы формирования заголовков рекомендуем придерживаться следующих правил для удобства пользователей:

  1. Информативность: Ставьте самую важную информацию (например, "ТЕСТ" или "КОПИЯ") в самое начало заголовка. Это позволит увидеть статус базы даже на узких кнопках панели задач Windows. Для более выразительного разделения сред часто применяется автоматическая смена стиля цветовой схемы.
  2. Лаконичность: Не делайте заголовок слишком длинным, иначе он будет обрезан. Помните, что на восприятие окна также влияет смена интерфейса пользователя на компактный или обычный.
  3. Визуализация: Используйте набор из 30 тем для интерфейса, чтобы визуально разделить разные базы.

Посмотрим на пример сложного заголовка, объединяющего несколько параметров:


Процедура ОбновитьЗаголовокОкна() Экспорт
    ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
    ИмяСервера = "SVR-PRODUCTION";
    РежимРаботы = ?(КонфигурацияИзменена(), "* ", ""); // Пометка, если есть изменения
    
    Заголовок = СтрШаблон("%1%2 | Пользователь: %3 | Сервер: %4", 
                           РежимРаботы, 
                           Метаданные.Синоним, 
                           ИмяПользователя, 
                           ИмяСервера);
                           
    УстановитьЗаголовокСистемы(Заголовок);
КонецПроцедуры

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

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

← На главную