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

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

В процессе разработки интерфейсов на обычных формах (толстый клиент) программисты часто сталкиваются с необходимостью повысить скорость работы пользователя. Одним из наиболее эффективных способов является внедрение горячих клавиш для навигации. Типичная задача — обеспечить быстрый переход между табличными частями документа (например, «Товары», «Услуги», «Спецификации») без использования мыши. Однако стандартные механизмы назначения клавиш через кнопки часто приводят к тому, что интерфейс загромождается лишними элементами. Разберем подробно, как реализовать этот функционал, сохранив эстетичность формы.

Метод 1. Использование главного меню формы (Акселераторы)

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

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

  1. Откроем конструктор формы и перейдем в свойства формы. Найдем строку Меню и нажмем на кнопку с лупой, чтобы создать или отредактировать меню.
  2. Создадим новый пункт меню, например, с заголовком «Сервис» или «Команды».
  3. Внутри этого пункта создадим подпункты для каждой табличной части, например: «Перейти к товарам» и «Перейти к услугам».
  4. Для каждого подпункта в поле СочетаниеКлавиш выберем нужную комбинацию (например, Ctrl + 1, Ctrl + 2).
  5. В событии Нажатие для этих пунктов меню пропишем программный перенос фокуса.

Посмотрим на пример кода, который должен располагаться в модуле формы для обработки перехода:


Процедура КомандыПерейтиКТоварам(Элемент)
    // Устанавливаем фокус на табличную часть "Товары"
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Товары;
КонецПроцедуры

Процедура КомандыПерейтиКУслугам(Элемент)
    // Устанавливаем фокус на табличную часть "Услуги"
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Услуги;
КонецПроцедуры

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

Метод 2. Скрытая командная панель

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

Разберем алгоритм настройки:

  1. Добавим на форму новый элемент управления КоманднаяПанель.
  2. В свойствах панели снимем галочку Автозаполнение, чтобы она была пустой.
  3. Добавим в эту панель кнопки. Для каждой кнопки укажем нужное СочетаниеКлавиш.
  4. Важный момент: если мы просто установим ЭлементыФормы.МояПанель.Видимость = Ложь, клавиши могут перестать нажиматься. Вместо этого можно использовать визуальную хитрость.

Чтобы скрыть панель, не отключая её активность, попробуем следующие приемы:

— Разместим панель за границами видимости формы (если форма имеет фиксированный размер и не прокручивается), установив координаты Верх или Лево в отрицательные значения (например, -100).

— Установим высоту и ширину панели в значение 0 или 1 пиксель.

— Разместим панель «под» другими элементами управления (например, под большой табличной частью), используя порядок обхода или слои.

В обработчике нажатия кнопки такой панели используем аналогичный код для активации ТекущийЭлемент.

Метод 3. Переключение закладок на многостраничной панели

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

Для этого используется свойство ТекущаяСтраница. Рассмотрим пример реализации:


Процедура ОбработкаГорячейКлавишиПерехода()
    // 1. Находим нужную страницу на панели закладок
    НужнаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.СтраницаТовары;
    
    // 2. Делаем её активной
    ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = НужнаяСтраница;
    
    // 3. Передаем фокус непосредственно в таблицу, чтобы пользователь мог сразу нажать "Добавить" или искать
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Товары;
КонецПроцедуры

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

Тонкости использования символа амперсанда (&)

Разберем еще один стандартный, но часто забываемый способ — использование акселераторов в заголовках. Если в заголовке кнопки или закладки перед какой-либо буквой поставить символ &, эта буква станет «горячей» при зажатой клавише Alt.

Например, если назвать страницу панели "&Товары", то сочетание Alt + Т (или Alt + T в зависимости от раскладки и системных настроек) автоматически переключит фокус на эту страницу. Это штатный механизм Windows, который отлично поддерживается обычными формами 1С. Его преимущество в том, что он не требует написания кода и создания скрытых элементов — достаточно правильно настроить заголовки существующих объектов ЭлементыФормы.

Конфликты горячих клавиш и системные ограничения

При назначении своих сочетаний строго рекомендуется избегать пересечений со стандартными клавишами 1С. Посмотрим на список наиболее важных:

Если вы назначите переключение между ТЧ на Insert, пользователь потеряет возможность добавлять строки стандартным способом. Оптимально использовать комбинации с клавишами Alt, Ctrl или функциональные клавиши F, которые редко задействованы в конкретном документе (например, F11, F12).

Резюме

Для реализации удобного перехода между табличными частями в обычных формах 1С лучше всего использовать Главное меню формы или скрытую командную панель. Ключевым программным инструментом здесь выступает установка свойства ЭтаФорма.ТекущийЭлемент. Помните, что в обычном приложении интерфейс управляется напрямую через коллекцию ЭлементыФормы, что дает большую гибкость в позиционировании элементов «за кадром» для обеспечения работы горячих клавиш без визуального шума.

← На главную