При автоматизации рабочих мест на базе сенсорных экранов (терминалы сбора данных, рабочие места комплектовщиков, кассовые зоны) разработчики регулярно сталкиваются с необходимостью адаптации интерфейса. Основное требование пользователей при работе без мыши и клавиатуры — крупные элементы управления, увеличенная высота строк и крупный кегль текста, чтобы оператор мог безошибочно попадать по экрану пальцем, в том числе в рабочих перчатках.
В платформе 1С 7.7 решение этой задачи имеет ряд специфических ограничений. Разберем по шагам, почему в типовом функционале возникают сложности, как задействовать внешние компоненты и какие альтернативные решения существуют для создания удобного touch-интерфейса.
Для понимания проблемы проанализируем, как устроен графический интерфейс «семерки». Дерево групп, списки справочников и табличные части документов построены на базе стандартных элементов управления Windows (Win32 Common Controls). В штатной конфигурации платформа не предоставляет разработчику отдельных программных свойств для управления размером шрифта конкретной колонки, высотой строки таблицы или кеглем дерева групп.
Единственный штатный путь изменения размера шрифтов в режиме предприятия — меню Сервис — Параметры, где задается общий шрифт для таблиц и модулей. Однако такое изменение является глобальным для всего рабочего места и часто приводит к тому, что стандартные диалоговые окна перестают помещаться на экране, а текст начинает обрезаться по границам элементов. Кроме того, 1С 7.7 не умеет корректно работать с системным масштабированием DPI (125%, 150%) в современных версиях Windows: элементы начинают наползать друг на друга, а заголовки колонок деформируются.
Классическим способом переопределения стандартного поведения интерфейса в 1С 7.7 является использование связки внешних библиотек 1cpp.dll (1С++) и formex.dll (FormEx). Эти компоненты осуществляют перехват оконных сообщений (subclassing) элементов управления платформы, позволяя управлять их стилями, цветами и шрифтами.
Разберем по шагам подключение и применение этих библиотек:
1cpp.dll и formex.dll в каталоге базы данных либо в каталоге исполняемых файлов платформы (папка BIN).ПриНачалеРаботыСистемы глобального модуля инициализируем загрузку компонент с помощью функции ЗагрузитьВнешнююКомпоненту().При использовании расширений формы на современных операционных системах разработчики часто сталкиваются с ситуацией, когда текст в таблицах или деревьях превращается в нечитаемые символы («кракозябры») или размытые пятна. Выясним причину такого поведения.
По умолчанию диалоги 1С 7.7 ориентированы на устаревший растровый шрифт MS Sans Serif. Когда внешняя библиотека пытается принудительно изменить размер растрового шрифта, операционная система не может корректно масштабировать пиксельные глифы. В Windows XP присутствовали встроенные механизмы сглаживания и подстановки, но в Windows 10 и Windows Server 2003/2012/2019 алгоритмы рендеринга изменились.
Для устранения визуальных дефектов необходимо выполнить следующие действия:
Tahoma, Arial или Segoe UI) с явным указанием русской кодовой страницы (RUSSIAN_CHARSET / 204).1cv7s.exe перейдите на вкладку «Совместимость», откройте раздел «Изменение параметров высокого DPI», установите флажок «Переопределение масштабирования высокого DPI» и выберите режим «Приложение» (Application).Если применение сторонних динамических библиотек ограничено политиками безопасности компании или приводит к нестабильной работе на терминальном сервере, рассмотрим проверенные обходные варианты построения сенсорного интерфейса:
Microsoft Web Browser, можно полностью сверстать рабочее место кассира или комплектовщика на HTML и CSS с крупными плитками, которые идеально реагируют на касания и свободно масштабируются под любое разрешение.