В процессе разработки интерфейсов, предназначенных для использования на сенсорных экранах (POS-терминалы, планшеты), программисты часто сталкиваются с проблемой ввода числовых данных. Стандартное поведение платформы 1С при работе с табличными частями требует совершения нескольких действий для вызова экранного калькулятора (выделение ячейки, переход в режим редактирования, нажатие кнопки выбора). Рассмотрим, как оптимизировать этот процесс и сделать ввод цифр максимально удобным для пользователей.
Прежде чем приступать к написанию собственного кода, проанализируем возможности самой платформы, которые помогут сократить количество лишних кликов. Первым делом обратим внимание на свойства колонки табличной части, в которой осуществляется ввод данных.
Для ускорения взаимодействия с ячейкой воспользуемся свойством РежимРедактирования. Если установить его в значение Непосредственно, поле будет становиться доступным для редактирования сразу при активации ячейки. Это исключает необходимость двойного клика для входа в режим правки, что критически важно при работе на сенсорном дисплее.
Также не забывайте про свойство КнопкаВыбора у поля ввода. Если активировать этот флаг, справа в ячейке появится иконка, вызывающая стандартный калькулятор (аналог нажатия F4). Несмотря на то, что это требует дополнительного попадания пальцем по маленькой иконке, в некоторых сценариях это остается самым простым и быстрым решением без создания дополнительных объектов конфигурации.
Если стандартный калькулятор 1С кажется вам слишком мелким для работы пальцами, оптимальным решением будет отрисовка собственной, специализированной формы. Разберем по шагам, как это реализовать:
ПриНачалеРедактирования или Выбор нужной колонки.СтандартнаяОбработка = Ложь. Это позволит нам полностью перехватить процесс ввода и предотвратить открытие стандартного диалогового окна.ОткрытьФорму() или ОткрытьФормуМодально().ОбработкаВыбора.Такой подход позволяет нам полностью контролировать дизайн и логику ввода, создавая интерфейс, адаптированный под конкретные размеры экрана и потребности пользователей.
Существуют ситуации, когда необходимо вызвать стандартный функционал платформы программно. Рассмотрим использование объекта WScript.Shell для имитации нажатия клавиши F4. Важно понимать, что метод Shell.sendKeys(\"{F4}\") может не сработать, если вызывать его слишком рано, так как платформа не успевает перевести фокус в ячейку.
Чтобы обойти эту проблему, воспользуемся ПодключитьОбработчикОжидания. Это позволит добавить небольшую задержку (например, 100 миллисекунд), после которой эмуляция клавиши выполнится корректно:
Процедура ИмяПроцедурыПослеАктивации()
ПодключитьОбработчикОжидания("ВызватьКалькулятор", 0.1, Истина);
КонецПроцедуры
Процедура ВызватьКалькулятор() Экспорт
Shell = Новый COMОбъект("WScript.Shell");
Shell.sendKeys("{F4}");
КонецПроцедуры
Обратите внимание: данный метод является «костыльным» и зависит от настроек безопасности операционной системы. Использование SendInput через внешние компоненты (WinAPI) считается более надежным, однако для повседневных задач настройки РежимРедактирования или создания своей формы вполне достаточно.
Многие начинающие разработчики пытаются использовать ВвестиЧисло(). Важно помнить, что этот метод вызывает системное диалоговое окно, предназначенное исключительно для физической клавиатуры. В нем нет наэкранных кнопок, поэтому для тачскринов оно абсолютно неэффективно, так как пользователю все равно придется вызывать виртуальную клавиатуру Windows, что усложняет рабочий процесс.
Таким образом, для качественного решения задачи на сенсорных экранах мы рекомендуем сосредоточиться на создании кастомного интерфейса с крупными элементами управления, что обеспечит максимальный комфорт и скорость работы персонала.