При разработке интерфейсов на управляемых формах 1С часто возникает задача по оптимизации пространства формы. Один из распространенных приемов — скрытие стандартной кнопки закрытия (крестика) путем установки свойства ОтображатьКнопкуЗакрытия в значение Ложь. Однако при этом стандартное поведение платформы меняется: форма перестает реагировать на клавишу Esc, что существенно снижает удобство работы пользователя (UX). Давайте разберем, почему это происходит и как вернуть привычное поведение формы.
Система 1С жестко связывает наличие визуального элемента ОтображатьКнопкуЗакрытия с обработкой клавиши Esc. Когда мы отключаем отображение кнопки через конфигуратор, платформа автоматически деактивирует обработчик закрытия формы по данной клавише. В стандартном режиме настроек формы у нас нет прямого свойства, позволяющего «отвязать» обработку Esc от видимости кнопки. Попытки назначить Esc в качестве сочетания клавиш для команды закрытия через конфигуратор также не приносят успеха, так как система блокирует это действие.
Так как штатный интерфейс не позволяет нам назначить клавишу Esc напрямую, мы можем воспользоваться внутренней структурой платформы. Для этого необходимо программно присвоить сочетанию клавиш элемента управления значение, соответствующее коду клавиши Esc. Рассмотрим пошаговый процесс реализации этого метода.
Закрыть().ПриСозданииНаСервере или ПриОткрытии, обратитесь к свойству СочетаниеКлавиш элемента управления.Для корректной записи сочетания клавиш используется функция ЗначениеИзСтрокиВнутр. Она позволяет передать внутреннее представление сочетания клавиш, включая код 27, который соответствует клавише Esc в таблице символов.
Разберем пример реализации, который позволяет принудительно назначить клавишу Esc для закрытия формы. В данном коде мы обращаемся к элементу управления, отвечающему за закрытие, и задаем ему необходимые параметры:
// Пример программной установки горячей клавиши Esc
// 27 — это ASCII-код клавиши Escape
Элементы.ЗакрытьФорму.СочетаниеКлавиш = ЗначениеИзСтрокиВнутр("{""#"",69cf4251-8759-11d5-bf7e-0050bae2bc79,1," + Символы.ПС + "{0," + 27 + "," + 0 + "}" + Символы.ПС + "}");
После выполнения данного кода платформа начнет воспринимать нажатие Esc как сигнал к выполнению команды, привязанной к данному элементу управления. Это позволяет сохранить лаконичный вид формы без «пустых» кнопок, при этом сохранив высокую эргономичность для конечного пользователя.
При использовании данного подхода стоит учитывать следующие нюансы:
ЗначениеИзСтрокиВнутр является обращением к внутренней реализации объектов платформы. Хотя этот метод стабильно работает в актуальных версиях 1С:Предприятия, при переходе на новые мажорные релизы платформы рекомендуется проверять работоспособность кода.Используя данный метод, вы сможете гибко настраивать интерфейс ваших приложений, не жертвуя при этом удобством пользователя. Помните, что главной целью является создание интуитивно понятного рабочего места, где скрытие лишних элементов не должно мешать привычным сценариям навигации по программе.