Как настроить закрытие управляемой формы по клавише Esc, если системная кнопка скрыта?

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

При разработке интерфейсов на управляемых формах 1С часто возникает задача по оптимизации пространства формы. Один из распространенных приемов — скрытие стандартной кнопки закрытия (крестика) путем установки свойства ОтображатьКнопкуЗакрытия в значение Ложь. Однако при этом стандартное поведение платформы меняется: форма перестает реагировать на клавишу Esc, что существенно снижает удобство работы пользователя (UX). Давайте разберем, почему это происходит и как вернуть привычное поведение формы.

Причина проблемы

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

Решение проблемы через программную установку сочетания клавиш

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

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

Для корректной записи сочетания клавиш используется функция ЗначениеИзСтрокиВнутр. Она позволяет передать внутреннее представление сочетания клавиш, включая код 27, который соответствует клавише Esc в таблице символов.

Пример программного кода

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


// Пример программной установки горячей клавиши Esc
// 27 — это ASCII-код клавиши Escape
Элементы.ЗакрытьФорму.СочетаниеКлавиш = ЗначениеИзСтрокиВнутр("{""#"",69cf4251-8759-11d5-bf7e-0050bae2bc79,1," + Символы.ПС + "{0," + 27 + "," + 0 + "}" + Символы.ПС + "}");

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

Рекомендации и важные замечания

При использовании данного подхода стоит учитывать следующие нюансы:

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

← На главную