Как скрыть панель навигации и убрать выделение элементов на форме 1С?

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

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

Скрытие панели навигации и системной командной панели

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

1. Использование свойств формы в конфигураторе

Самый простой способ — это изменение свойств самой формы. Проследуем в палитру свойств или используем редактор форм в режиме предприятия и найдем раздел «Интерфейс». Здесь нас интересуют два ключевых параметра:

  1. Положение командной панели: установим значение в Нет. Это полностью удалит область сверху формы, где обычно располагаются кнопки «Записать», «Провести» и другие.
  2. Использовать стандартные команды: на закладке «Команды» формы снимите этот флаг. Это действие очистит форму от предустановленных системных кнопок (Справка, Печать и т.д.).

2. Программное управление видимостью

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


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

3. Скрытие инструментов Табличного документа

Часто «неубиваемая» панель навигации с кнопками сохранения и печати появляется из-за наличия на форме элемента типа ТабличныйДокумент. Выясним причину: по умолчанию у него включен показ панели инструментов. Чтобы это исправить, выделим элемент формы или используйте добавление реквизитов и элементов формы динамически, и установим свойство ОтображатьПанельИнструментов в значение Ложь.

Как избавиться от визуального выделения (фокуса) элементов

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

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

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

Свойство «Пропускать при вводе»

Для всех элементов формы, на которых не должен задерживаться пользователь при навигации клавишей Tab, следует установить свойство ПропускатьПриВводе в значение Да. Это значительно снижает вероятность появления фокуса на технических элементах формы.

Программный перенос фокуса (метод «Костыля»)

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


&НаКлиенте
Процедура НажатьКнопку(Команда)
    // Выполняем полезное действие кнопки
    ВыполнитьДействие();
    
    // Переносим фокус на вспомогательный элемент
    // Важно: элемент должен быть видимым и доступным в момент установки
    ТекущийЭлемент = Элементы.ВспомогательныйРеквизит;
КонецПроцедуры

Однако, как было замечено в обсуждении, при открытии формы фокус все равно может устанавливаться на первый доступный элемент. Чтобы решить эту проблему, используем Обработчик ожидания. Это позволит форме сначала полностью отрисоваться, а затем выполнит перенос фокуса.


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Подключаем однократный обработчик с минимальной задержкой
    ПодключитьОбработчикОжидания("СброситьФокус", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура СброситьФокус()
    // Устанавливаем текущий элемент на декорацию или поле, которое не выделяется рамкой
    Попытка
        ЭтаФорма.ТекущийЭлемент = Элементы.ГруппаЗаголовок; 
    Исключение
        // Игнорируем ошибку, если элемент недоступен
    КонецПопытки;
КонецПроцедуры

Запрет выделения в таблицах и табличных документах

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

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

← На главную