Как настроить поведение курсора при вводе данных в табличный документ 1С?

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

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

Почему курсор «прыгает» по табличному документу?

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

Как изменить настройки перехода после ввода

Для того чтобы управлять перемещением курсора, нам необходимо изменить свойство НаправлениеПерехода. Однако главная трудность, с которой сталкиваются программисты, — это поиск данной настройки в конфигураторе. Давайте пройдем этот путь по шагам:

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

Программная настройка поведения

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


// Создаем или получаем табличный документ
ТабДок = Новый ТабличныйДокумент;

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

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


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

Рекомендации по архитектуре форм ввода

Анализируя ситуацию, важно помнить, что ТабличныйДокумент не является полноценной заменой ТабличнаяЧасть. Если ваша задача — обеспечить пользователю удобный ввод большого объема данных с возможностью выделения строк, копирования и группового редактирования, стоит рассмотреть следующие архитектурные подходы:

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

← На главную