Как в таблице 1С настроить переход курсора на нижнюю ячейку по нажатию Enter?

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

При разработке различных обработок или отчетов, предназначенных для ручного ввода данных, часто возникает запрос от пользователей сделать поведение таблицы «как в Excel». По умолчанию в 1С при нажатии клавиши Enter в табличном документе курсор перемещается вправо, к следующей колонке. Для многих это непривычно, особенно если работа предполагает заполнение длинных списков или ввод данных в одну колонку сверху вниз. Если подобные рутинные операции по заполнению документов выполняются регулярно, для их автоматизации без изменения конфигурации можно настроить программных роботов на платформе One RPA.

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

Способ 1: Интерактивная настройка в Конфигураторе

Если вы работаете с Табличным документом (макетом или полем табличного документа на форме), настройка выполняется через палитру свойств. Однако именно здесь многие разработчики сталкиваются с трудностями, так как нужный параметр находится не на самом видном месте.

Рассмотрим по шагам, как добраться до этой настройки:

  1. Откройте нужный макет или форму с табличным документом в Конфигураторе.
  2. Выделите любую ячейку в таблице и нажмите Alt + Enter (или через правую кнопку мыши выберите «Свойства»).
  3. Обратите внимание на верхнюю часть открывшейся палитры свойств. Там находится выпадающий список (комбобокс), который определяет, чьи именно свойства сейчас отображаются.
  4. По умолчанию там выбрано «Ячейки». Нам необходимо нажать на этот список и выбрать вторую строку — «Табличный документ». Это переключит фокус палитры с конкретной ячейки на настройки всего документа в целом.
  5. В списке свойств найдите раздел «Поведение» (или воспользуйтесь поиском по свойствам) и отыщите параметр «Направление перехода».
  6. Установите значение «По строкам».

После этого при нажатии клавиши Enter курсор будет перемещаться строго вниз. Проанализируем ситуацию: почему это неочевидно? Дело в том, что 1С разделяет свойства конкретной области (ячейки) и глобальные свойства самого контейнера (табличного документа), и переключение между ними в одном окне свойств часто сбивает новичков с толку.

Способ 2: Программное управление направлением перехода

Иногда требуется менять логику поведения таблицы «на лету» — например, в зависимости от того, какой режим работы выбрал пользователь или какой раздел документа сейчас заполняется. Для этого мы можем использовать встроенный язык 1С.

У объекта ТабличныйДокумент существует свойство НаправлениеПерехода, которое принимает значения из системного перечисления ТипНаправленияПереходаТабличногоДокумента. Рассмотрим пример кода, который можно разместить в процедуре ПриСозданииНаСервере или в специализированном обработчике:


// Устанавливаем переход вниз (как в Excel)
Элементы.ПолеТабличногоДокумента.НаправлениеПерехода = ТипНаправленияПереходаТабличногоДокумента.ПоСтрокам;

// Если нужно вернуть стандартное поведение (вправо)
Элементы.ПолеТабличногоДокумента.НаправлениеПерехода = ТипНаправленияПереходаТабличногоДокумента.ПоКолонкам;

// Если нужно запретить переход вовсе
Элементы.ПолеТабличногоДокумента.НаправлениеПерехода = ТипНаправленияПереходаТабличногоДокумента.БезПерехода;

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

Различия между Табличным документом и Таблицей формы

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

Табличный документ (Spreadsheet Document) — это инструмент для построения отчетов и сложных печатных форм. Именно в нем есть штатное свойство НаправлениеПерехода.

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

Как реализовать переход «вниз» в обычных табличных частях

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

1. Использование свойства «Пропускать при вводе». Если в таблице много колонок, но пользователю нужно заполнять только одну (например, «Цена»), установите для всех остальных колонок свойство ПропускатьПриВводе. В этом случае после нажатия Enter система может автоматически переходить на следующую строку, если включена опция АвтоматическийВводНовойСтроки.

2. Обработка события «ПриИзменении». Разберем по шагам логику реализации перехода в коде:

  1. В обработчике события ПриИзменении для конкретной колонки необходимо определить текущий индекс строки.
  2. Проверить, есть ли следующая строка.
  3. Установить текущую строку элемента формы на следующую, а текущим элементом оставить ту же колонку.

Иногда для того, чтобы платформа корректно отработала штатные механизмы завершения редактирования, такой «перескок» лучше выполнять через ПодключитьОбработчикОжидания с минимальной задержкой (0.1 сек). При необходимости перехватывать нажатия клавиш напрямую можно использовать компоненту для перехвата ввода с клавиатуры в 1С.

Полезные советы по работе с клавиатурой

Проанализируем альтернативные способы навигации, о которых полезно знать и разработчику, и пользователю:

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

← На главную