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

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

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

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

Теория: как работают режимы редактирования ячеек в платформе 1С

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

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

  1. ВходПриВводе (установлен по умолчанию): В этом режиме обычный одиночный клик мыши по ячейке просто переводит на нее фокус (выделяет ее рамкой). Чтобы начать вводить данные, пользователю необходимо совершить дополнительное действие: сделать двойной клик, нажать клавишу F2, клавишу Enter или сразу начать набирать текст на клавиатуре. Такой подход безопасен, так как предотвращает случайное изменение данных при простом просмотре таблицы, но крайне неудобен при активном вводе данных.
  2. Непосредственно: Этот режим кардинально меняет поведение ячейки. Как только ячейка получает фокус (неважно, кликнули ли вы по ней мышкой или перешли с помощью стрелок клавиатуры), она мгновенно переходит в режим редактирования. Появляется курсор, открывается поле ввода, активируются кнопки выбора. Поведение таблицы становится похожим на работу в Microsoft Excel.

Настройка быстрого редактирования в обычных формах

Разберем, как реализовать поведение "по первому клику" в обычных формах (толстый клиент). В обычном приложении это свойство настраивается на уровне конкретной колонки табличного поля. Это дает нам гибкость: мы можем разрешить быстрое редактирование для одних колонок (например, числовых) и оставить стандартное поведение для других.

Рассмотрим по шагам интерактивный способ настройки в конфигураторе:

  1. Откроем нужную форму в конфигураторе и выберем элемент управления ТабличноеПоле.
  2. Перейдем в свойства нужной колонки табличного поля.
  3. Найдем свойство Режим редактирования.
  4. Установим его значение в Непосредственно.

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


Процедура ПриОткрытии()
    // Настраиваем режим непосредственного редактирования для колонки "Количество"
    ЭлементыФормы.Товары.Колонки.Количество.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
    
    // Настраиваем аналогичный режим для колонки "Цена"
    ЭлементыФормы.Товары.Колонки.Цена.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КонецПроцедуры

После применения этих настроек пользователю достаточно будет один раз кликнуть по ячейке "Количество", чтобы сразу начать вводить числовое значение.

Особенности настройки в управляемых формах

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

Соответственно, свойство Режим редактирования теперь принадлежит не самой абстрактной колонке, а конкретному элементу управления, который в этой колонке размещен.

Рассмотрим интерактивную настройку в управляемой форме:

  1. В дереве элементов управляемой формы найдем нашу таблицу и развернем список ее колонок.
  2. Выберем элемент, соответствующий нужной колонке (это должно быть Поле с видом Поле ввода).
  3. В палитре свойств найдем группу параметров Реализация.
  4. Внутри этой группы найдем свойство Режим редактирования и выберем значение Непосредственно.

Если нам необходимо установить этот режим программно (например, при определенных условиях работы формы), мы должны делать это на сервере при создании формы. Проанализируем пример кода в обработчике ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Устанавливаем режим непосредственного редактирования для элемента колонки
    Элементы.ТоварыКоличество.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
КонецПроцедуры

Обратите внимание, что мы обращаемся именно к элементу формы (колонке таблицы), а не к реквизиту объекта. Имя элемента по умолчанию формируется как комбинация имени таблицы и имени реквизита (например, ТоварыКоличество).

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

Бывают сценарии, когда нам нужно избавить пользователя даже от первого клика мышкой. Например, когда пользователь нажимает кнопку "Добавить строку", программа автоматически создает новую строку, и нам хочется, чтобы курсор сразу же встал в ячейку "Номенклатура" и открыл ее для редактирования. Это значительно ускоряет потоковый ввод данных.

Выясним, как это реализовать программными методами для разных типов форм.

Решение для обычных форм

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


// Предположим, мы только что добавили новую строку в табличную часть
НоваяСтрока = Товары.Добавить();

// Шаг 1. Передаем фокус на созданную строку
ЭлементыФормы.Товары.ТекущаяСтрока = НоваяСтрока;

// Шаг 2. Активируем нужную колонку (например, "Номенклатура")
ЭлементыФормы.Товары.ТекущаяКолонка = ЭлементыФормы.Товары.Колонки.Номенклатура;

// Шаг 3. Программно имитируем нажатие клавиши изменения (активируем редактирование)
ЭлементыФормы.Товары.ИзменитьСтроку();

Решение для управляемых форм

В управляемом интерфейсе логика аналогична, однако синтаксис работы с элементами формы и строками табличной части отличается. Здесь мы оперируем идентификаторами строк. Проанализируем пример кода для тонкого клиента:


&НаКлиенте
Процедура ДобавитьИАктивироватьСтроку()
    // Добавляем строку в коллекцию данных
    НоваяСтрока = Объект.Товары.Добавить();
    
    // Получаем уникальный идентификатор добавленной строки
    ИдентификаторСтроки = НоваяСтрока.ПолучитьИдентификатор();
    
    // Шаг 1. Устанавливаем текущую строку в таблице на форме
    Элементы.Товары.ТекущаяСтрока = ИдентификаторСтроки;
    
    // Шаг 2. Устанавливаем текущий элемент формы (колонка "Номенклатура")
    Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатура;
    
    // Шаг 3. Запускаем режим редактирования строки
    Элементы.Товары.ИзменитьСтроку();
КонецПроцедуры

Использование метода ИзменитьСтроку() позволяет полностью автоматизировать процесс ввода, делая работу пользователя бесшовной и быстрой.

Важные практические нюансы и рекомендации

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

  1. Избыточность для сложных типов данных: Не включайте режим непосредственного редактирования для колонок, содержащих составные типы данных или ссылки на огромные и тяжелые справочники (например, "Контрагенты" или "Договоры"). При активации такой ячейки платформа может сразу начать подгружать списки выбора или открывать модальные окна, что приведет к зависанию интерфейса при простом перемещении по таблице стрелочками.
  2. Идеальные кандидаты для быстрого ввода: Этот режим идеально подходит для простых типов данных: чисел, дат, флагов (булево) и коротких строк. Настройка режима "Непосредственно" для колонок "Количество", "Цена", "Скидка" существенно повысит скорость работы операторов склада или кассиров.
  3. Альтернатива без мыши (клавиша F2): Обучите пользователей работе с клавиатурой. Если режим быстрого клика отключен, стандартным способом быстрого входа в ячейку является клавиша F2. Повторное нажатие F2 внутри редактируемого поля переключает режим работы стрелок клавиатуры (перемещение по символам внутри текста или перемещение фокуса между ячейками таблицы).

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

← На главную