Как вернуться на предыдущее поле при использовании клавиши Enter для навигации в 1С

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

При работе с управляемыми формами 1С программисты и пользователи часто сталкиваются с нюансами навигации между полями ввода. Один из самых частых вопросов: существует ли комбинация клавиш, которая является «антиподом» клавиши Enter? Если Shift + Tab возвращает нас назад при использовании Tab, то что делать, если мы перемещаемся по полям с помощью Enter?

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

Различие в логике клавиш Enter и Tab

Для начала проанализируем ситуацию: почему Shift + Tab не всегда возвращает нас именно в то поле, из которого мы только что ушли нажатием Enter? Разберем по шагам внутреннюю логику платформы 1С:

  1. Клавиша Tab: Это стандартный инструмент навигации в интерфейсах. Она перемещает фокус ввода строго по порядку всех доступных элементов формы. При этом Shift + Tab является ее зеркальным отражением.
  2. Клавиша Enter: В 1С эта клавиша предназначена для ускоренного ввода данных. Ее главная особенность заключается в том, что она учитывает свойство элемента ПропускатьПриВводе (SkipOnInput).

Рассмотрим подробнее: если у элемента формы установлено свойство «Пропускать при вводе», то при нажатии Enter фокус «перепрыгнет» через это поле, чтобы пользователь не тратил время на неважные данные. Однако клавиша Tab проигнорирует эту настройку и все равно зайдет в это поле. Именно здесь возникает диссонанс: если вы перешли из Поля А в Поле В нажатием Enter (пропустив Поле Б), то нажатие Shift + Tab вернет вас в Поле Б, а не в Поле А.

Вывод: Технического «анти-Enter», который бы учитывал флаг пропуска элементов при движении назад, в платформе 1С не существует. Shift + Tab всегда работает как антипод Tab.

Настройка порядка обхода в управляемых формах

Выясним причину, по которой элементы могут обходиться в «странном» порядке. В обычных формах (7.7 или 8.2) существовал визуальный инструмент настройки порядка обхода. В управляемых формах 1С 8.3 подход изменился.

Рассмотрим, как определяется последовательность перехода:

Порядок обхода в управляемой форме жестко привязан к дереву элементов формы. Фокус перемещается сверху вниз по структуре дерева. Если элементы сгруппированы в группы «Горизонтальная» или «Вертикальная», платформа обходит их слева направо или сверху вниз соответственно, исходя из их положения в иерархии дерева.

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

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

Поведение клавиши Enter на уровне всей формы

Проанализируем свойство самой управляемой формы, которое часто забывают разработчики. У корня формы есть свойство «Поведение клавиши Enter» (EnterKeyBehavior). Оно определяет, как будет вести себя форма при нажатии этой клавиши.

Существует два основных режима:

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

Особенности многострочных полей и таблиц

Посмотрим на пример работы с многострочными текстовыми полями. Если фокус находится в поле, где разрешено вводить несколько строк текста, нажатие Enter просто перенесет курсор на новую строку. В этом случае для перехода к следующему полю пользователю придется использовать либо Ctrl + Enter, либо клавишу Tab.

В табличных частях (списках) поведение также специфично:

Программное управление фокусом

Иногда разработчики пытаются программно перехватить нажатие клавиш Tab или Shift + Tab, чтобы реализовать свою логику «обратного хода». К сожалению, стандартными средствами встроенного языка 1С (без использования WinAPI или внешних компонент) сделать это невозможно. У элементов формы нет события ПриНажатииКлавиши.

Единственный способ управлять фокусом программно — это использование свойства формы ТекущийЭлемент. Посмотрим на пример кода, как можно принудительно перекинуть фокус при изменении значения:


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

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

Итоги

Подведем итог нашему разбору:

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

← На главную