Как скрыть панель функций раздела для конкретной управляемой формы в интерфейсе «Такси»?

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

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

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

Метод 1: Использование режима блокировки всего интерфейса

Самый простой и «чистый» способ скрыть все лишние панели для конкретной формы — это изменить режим ее открытия. Если форма открывается так, что она перекрывает весь интерфейс приложения, то панели разделов и функций исчезают автоматически, предоставляя максимум места для работы.

Проанализируем ситуацию: когда мы используем обычное открытие формы, она вписывается в рабочую область. Но если мы установим свойство РежимОткрытияОкнаФормы в значение БлокироватьВесьИнтерфейс, форма займет все доступное пространство поверх стандартного каркаса приложения.

Разберем по шагам, как это реализовать программно:


ПараметрыФормы = Новый Структура;
// Здесь могут быть ваши параметры
ОткрытьФорму("ОбщаяФорма.МояСложнаяФорма", ПараметрыФормы, , , , , , РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

Преимущества данного метода:

  1. Отсутствие мерцания интерфейса при переключении.
  2. Автоматическое восстановление видимости панелей при закрытии формы.
  3. Максимальное использование площади монитора без изменения глобальных настроек пользователя.

Метод 2: Программное управление составом панелей через «КлиентскоеПриложение»

Если вам необходимо оставить форму в составе основного окна, но при этом скрыть определенные панели (например, только панель функций раздела), можно воспользоваться методом УстановитьСоставПанелей(). Этот метод позволяет динамически перестраивать интерфейс «на лету».

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

В модуле формы пропишем следующий алгоритм:


&НаКлиенте
Перем СоставПанелейДоОткрытия;

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Сохраняем текущие настройки, чтобы вернуть их позже
    СоставПанелейДоОткрытия = ТекущийВариантИнтерфейсаКлиентскогоПриложения();
    
    // Формируем новый состав панелей
    НовыйСостав = Новый ОписаниеСоставаПанелей;
    // Оставляем только нужные панели или создаем пустую структуру
    // В данном примере мы убираем панель функций раздела
    КлиентскоеПриложение.УстановитьСоставПанелей(НовыйСостав);
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
    // Восстанавливаем настройки при закрытии формы
    Если Не ЗавершениеРаботы Тогда
        КлиентскоеПриложение.УстановитьСоставПанелей(СоставПанелейДоОткрытия);
    КонецЕсли;
КонецПроцедуры

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

Метод 3: Перевод окна в полноэкранный режим

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

Посмотрим на пример кода, который можно разместить в обработчике ПриОткрытии:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЭтаФорма.ТекущееОкно.Состояние = СостояниеОкнаКлиентскогоПриложения.Максимизированное;
    ПолноэкранныйРежим(Истина);
КонецПроцедуры

Этот подход позволяет использовать 100% площади экрана. Чтобы вернуться в обычный режим, пользователю придется либо нажать Esc (если это предусмотрено), либо закрыть форму, в обработчике закрытия которой нужно вызвать ПолноэкранныйРежим(Ложь).

Метод 4: Использование компактного интерфейса (платформа 8.3.15+)

Если ваша задача — не полностью убрать панель, а лишь уменьшить ее негативное влияние на свободное место, проанализируем возможности современного «компактного» режима. В новых версиях платформы разработчики добавили режим, в котором все отступы и заголовки становятся значительно меньше.

Хотя эта настройка является пользовательской, ее можно рекомендовать внедрить на уровне всей базы. Для этого перейдите в Сервис и настройки — Настройки — Параметры и выберите «Внешний вид: Компактный». Это не скроет панель функций, но существенно «схлопнет» интерфейс, освобождая место под табличные части и графики внутри формы.

Практические советы по дизайну формы для экономии места

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

  1. Использование свертываемых групп: Создайте группы с типом ГруппаФормы.ТипГруппы.Свертываемая. Пользователь сможет сам скрывать блоки данных, которые ему не нужны в данный момент.
  2. Панели страниц: Вместо огромного списка полей вертикально, используйте Страницы. Это стандартный и наиболее удобный для пользователя способ организации больших объемов информации.
  3. Автомаксимальное состояние: В свойствах формы в конфигураторе установите флаг АвтоМаксимальноеСостояние. Это заставит форму при открытии стараться занять всю доступную ширину и высоту рабочего пространства.

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

← На главную