При разработке сложных интерфейсов в 1С:Предприятии 8.3 часто возникает ситуация, когда на одной конкретной форме сосредоточено огромное количество информации. В таких случаях стандартные панели интерфейса «Такси» (панель разделов, панель функций текущего раздела, панель открытых окон) начинают занимать полезное пространство, которое могло бы использоваться для отображения данных. Штатной настройки в конфигураторе, позволяющей «галочкой» скрыть эти панели только для одной формы, не существует, так как состав панелей — это глобальная настройка сеанса пользователя.
В этой статье мы подробно рассмотрим, какими методами можно добиться освобождения экранного пространства, проанализируем программные способы управления интерфейсом и выясним, какие из них являются наиболее эффективными и безопасными для производительности системы.
Самый простой и «чистый» способ скрыть все лишние панели для конкретной формы — это изменить режим ее открытия. Если форма открывается так, что она перекрывает весь интерфейс приложения, то панели разделов и функций исчезают автоматически, предоставляя максимум места для работы.
Проанализируем ситуацию: когда мы используем обычное открытие формы, она вписывается в рабочую область. Но если мы установим свойство РежимОткрытияОкнаФормы в значение БлокироватьВесьИнтерфейс, форма займет все доступное пространство поверх стандартного каркаса приложения.
Разберем по шагам, как это реализовать программно:
ПараметрыФормы = Новый Структура;
// Здесь могут быть ваши параметры
ОткрытьФорму("ОбщаяФорма.МояСложнаяФорма", ПараметрыФормы, , , , , , РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
Преимущества данного метода:
Если вам необходимо оставить форму в составе основного окна, но при этом скрыть определенные панели (например, только панель функций раздела), можно воспользоваться методом УстановитьСоставПанелей(). Этот метод позволяет динамически перестраивать интерфейс «на лету».
Рассмотрим подробнее реализацию этого механизма. Нам потребуется сохранить текущее состояние панелей при открытии формы и восстановить его при закрытии, иначе пользователь останется без навигации во всем приложении.
В модуле формы пропишем следующий алгоритм:
&НаКлиенте
Перем СоставПанелейДоОткрытия;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Сохраняем текущие настройки, чтобы вернуть их позже
СоставПанелейДоОткрытия = ТекущийВариантИнтерфейсаКлиентскогоПриложения();
// Формируем новый состав панелей
НовыйСостав = Новый ОписаниеСоставаПанелей;
// Оставляем только нужные панели или создаем пустую структуру
// В данном примере мы убираем панель функций раздела
КлиентскоеПриложение.УстановитьСоставПанелей(НовыйСостав);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
// Восстанавливаем настройки при закрытии формы
Если Не ЗавершениеРаботы Тогда
КлиентскоеПриложение.УстановитьСоставПанелей(СоставПанелейДоОткрытия);
КонецЕсли;
КонецПроцедуры
Важное замечание: Выясним причину, по которой этот метод редко используется на практике. При каждом вызове УстановитьСоставПанелей() происходит полная перерисовка окна 1С. Это вызывает заметное мерцание и может раздражать пользователя, если он часто переключается между окнами.
Для некоторых специфических задач (например, рабочее место кассира или сложный монитор отчетности) целесообразно использовать полноэкранный режим. Это радикальное решение, которое полностью скрывает даже заголовки окна операционной системы.
Посмотрим на пример кода, который можно разместить в обработчике ПриОткрытии:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.ТекущееОкно.Состояние = СостояниеОкнаКлиентскогоПриложения.Максимизированное;
ПолноэкранныйРежим(Истина);
КонецПроцедуры
Этот подход позволяет использовать 100% площади экрана. Чтобы вернуться в обычный режим, пользователю придется либо нажать Esc (если это предусмотрено), либо закрыть форму, в обработчике закрытия которой нужно вызвать ПолноэкранныйРежим(Ложь).
Если ваша задача — не полностью убрать панель, а лишь уменьшить ее негативное влияние на свободное место, проанализируем возможности современного «компактного» режима. В новых версиях платформы разработчики добавили режим, в котором все отступы и заголовки становятся значительно меньше.
Хотя эта настройка является пользовательской, ее можно рекомендовать внедрить на уровне всей базы. Для этого перейдите в Сервис и настройки — Настройки — Параметры и выберите «Внешний вид: Компактный». Это не скроет панель функций, но существенно «схлопнет» интерфейс, освобождая место под табличные части и графики внутри формы.
Вместо того чтобы пытаться бороться с каркасом приложения, давайте проанализируем, как можно оптимизировать саму форму. Зачастую проблема «нехватки места» решается правильным проектированием интерфейса:
ГруппаФормы.ТипГруппы.Свертываемая. Пользователь сможет сам скрывать блоки данных, которые ему не нужны в данный момент.Страницы. Это стандартный и наиболее удобный для пользователя способ организации больших объемов информации.АвтоМаксимальноеСостояние. Это заставит форму при открытии стараться занять всю доступную ширину и высоту рабочего пространства.Выясним итог: программное скрытие панелей через УстановитьСоставПанелей() технически возможно, но из-за побочных эффектов в виде перерисовки интерфейса оно не рекомендуется для массового использования. Оптимальным решением остается либо открытие формы в режиме блокировки всего интерфейса, либо качественная переработка дизайна самой формы с использованием закладок и сворачиваемых зон.