Как увеличить размер шрифта и элементов интерфейса в 1С 7.7 для сенсорного экрана

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

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

Архитектурные ограничения платформы 1С 7.7

Для понимания проблемы проанализируем, как устроен графический интерфейс «семерки». Дерево групп, списки справочников и табличные части документов построены на базе стандартных элементов управления Windows (Win32 Common Controls). В штатной конфигурации платформа не предоставляет разработчику отдельных программных свойств для управления размером шрифта конкретной колонки, высотой строки таблицы или кеглем дерева групп.

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

Использование внешних компонент 1С++ и FormEx

Классическим способом переопределения стандартного поведения интерфейса в 1С 7.7 является использование связки внешних библиотек 1cpp.dll (1С++) и formex.dll (FormEx). Эти компоненты осуществляют перехват оконных сообщений (subclassing) элементов управления платформы, позволяя управлять их стилями, цветами и шрифтами.

Разберем по шагам подключение и применение этих библиотек:

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

Устранение проблем со шрифтами в Windows 10 и Windows Server

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

По умолчанию диалоги 1С 7.7 ориентированы на устаревший растровый шрифт MS Sans Serif. Когда внешняя библиотека пытается принудительно изменить размер растрового шрифта, операционная система не может корректно масштабировать пиксельные глифы. В Windows XP присутствовали встроенные механизмы сглаживания и подстановки, но в Windows 10 и Windows Server 2003/2012/2019 алгоритмы рендеринга изменились.

Для устранения визуальных дефектов необходимо выполнить следующие действия:

  1. Использование векторных шрифтов: При программном назначении шрифта через компоненты обязательно указывайте векторные шрифты TrueType/OpenType с поддержкой кириллицы (например, Tahoma, Arial или Segoe UI) с явным указанием русской кодовой страницы (RUSSIAN_CHARSET / 204).
  2. Настройка масштабирования приложения: В свойствах файла 1cv7s.exe перейдите на вкладку «Совместимость», откройте раздел «Изменение параметров высокого DPI», установите флажок «Переопределение масштабирования высокого DPI» и выберите режим «Приложение» (Application).
  3. Проверка региональных настроек: Убедитесь, что в языковых настройках операционной системы для программ, не поддерживающих Юникод, установлена кодовая страница 1251 (Россия).

Альтернативные архитектурные решения для сенсорного экрана

Если применение сторонних динамических библиотек ограничено политиками безопасности компании или приводит к нестабильной работе на терминальном сервере, рассмотрим проверенные обходные варианты построения сенсорного интерфейса:

  1. Использование объекта «Таблица» (Moxcel) вместо табличной части: На форму документа или обработки помещается элемент управления «Таблица». В отличие от стандартного табличного поля списка, в табличном документе штатными методами 1С 7.7 можно задать любую высоту строк, объединение ячеек и крупный кегль текста. Клик по строке перехватывается через предопределенные процедуры формы, обеспечивая крупное и стабильное отображение позиций чека или накладной.
  2. Специализированная кнопочная навигация: Для сенсорного ввода от стандартных тонких полос прокрутки и дерева групп часто отказываются вовсе. На форму помещаются крупные кнопки с формулами: «Вверх на страницу», «Вниз на страницу», «Папка вверх», «Выбрать». Для ввода чисел (количества, цен) на форме размещается сенсорная цифровая клавиатура из крупных кнопок с цифрами от 0 до 9.
  3. Внедрение HTML-интерфейса через ActiveX: Поместив на форму элемент Microsoft Web Browser, можно полностью сверстать рабочее место кассира или комплектовщика на HTML и CSS с крупными плитками, которые идеально реагируют на касания и свободно масштабируются под любое разрешение.
  4. Аппаратное изменение разрешения дисплея: Наиболее простое техническое решение, не требующее доработки конфигурации — принудительная установка пониженного физического разрешения сенсорного монитора (например, 1024×768 или 800×600) при стандартном масштабе системы 100%. Это пропорционально увеличивает все стандартные элементы 1С 7.7 без визуальных искажений шрифтов.
← На главную