Почему обрезаются цифры при выравнивании по правому краю в 1С на Windows Server 2016/2019 и как это исправить

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

Переход со старых версий операционных систем, таких как Windows Server 2008, на современные решения (Windows Server 2016, 2019 или 2022) часто преподносит неприятные сюрпризы для пользователей программ на базе обычных форм. Одной из таких проблем является визуальная обрезка последнего символа (обычно цифры) в полях ввода или ячейках таблиц, если для них установлено выравнивание по правому краю. Рассмотрим причины этого явления и разберем по шагам все доступные способы решения задачи.

Анализ причины проблемы: механизм GDI и изменения в современных ОС

Для начала проанализируем ситуацию с технической точки зрения. Платформа 1С:Предприятие в режиме обычных форм для отрисовки интерфейса использует графический интерфейс устройства GDI (Graphics Device Interface). Начиная с Windows 10 и Windows Server 2016, компания Microsoft существенно переработала алгоритмы сглаживания шрифтов и механизмы масштабирования интерфейса (DPI).

Выясним причину обрезки: современные алгоритмы рендеринга и сглаживания шрифтов (таких как ClearType) рассчитывают ширину текстовой строки с учетом субпиксельного позиционирования. В результате фактическая ширина строки в пикселях может оказаться на 1–2 пикселя больше, чем рассчитывает платформа 1С, опираясь на старые метрики GDI. При выравнивании по правому краю текст прижимается вплотную к правой границе контейнера, и эти "лишние" пиксели просто не помещаются в отведенную область, из-за чего крайний символ кажется обрезанным.

Решение 1: Настройка сглаживания шрифтов и параметров RDP

Как показывает практика и обсуждения системных администраторов, наиболее эффективным методом борьбы с этой проблемой является управление функцией ClearType и сглаживанием шрифтов в терминальных сессиях. Рассмотрим подробнее, как это влияет на процесс.

Когда ClearType выключен, протокол RDP передает команды по отрисовке символов на сторону клиента. Когда он включен — сервер рендерит картинку, сжимает ее и пересылает клиенту. Отключение сглаживания не только возвращает "старые" метрики шрифтов, но и часто ускоряет работу интерфейса.

Порядок действий на сервере:

  1. Откроем Редактор локальной групповой политики (gpedit.msc).
  2. Перейдем в раздел: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Среда удаленных сеансов.
  3. Найдем параметр "Не разрешать сглаживание шрифтов" (Do not allow font smoothing).
  4. Установим значение "Включено". Это принудительно отключит сглаживание для всех RDP-подключений.

Также проверим настройки быстродействия системы:

  1. Зайдем в Панель управления -> Система -> Дополнительные параметры системы.
  2. На вкладке Дополнительно в секции Быстродействие нажмем Параметры.
  3. Снимем флажок с пункта "Сглаживать неровности экранных шрифтов".

Решение 2: Настройка совместимости высокого DPI (High DPI Scaling)

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

Рассмотрим шаги по настройке:

  1. Найдем исполняемый файл платформы. Обычно он находится по пути: C:\Program Files (x86)\1cv8\номер_версии\bin\1cv8.exe.
  2. Нажмем правой кнопкой мыши на файл и выберем "Свойства".
  3. Перейдем на вкладку "Совместимость".
  4. Нажмем кнопку "Изменить параметры высокого DPI".
  5. Установим галочку в пункте "Переопределите режим масштабирования высокого разрешения".
  6. В выпадающем списке выберем вариант "Система" или "Система (улучшенная)". Это позволит ОС самостоятельно масштабировать интерфейс 1С, что часто исправляет ошибки расчета границ текстовых полей.

Решение 3: Использование манифеста приложения (для опытных пользователей)

Посмотрим на более глубокий уровень настройки через файл манифеста. Платформа 1С может сообщать операционной системе, что она умеет работать с высоким разрешением (DPI Aware). Если мы принудительно укажем, что приложение не поддерживает DPI Aware, Windows применит к нему стандартные механизмы масштабирования.

Для этого рядом с файлом 1cv8.exe создадим текстовый файл 1cv8.exe.manifest со следующим содержанием:


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
    </windowsSettings>
  </application>
</assembly>

Это заставит систему считать приложение "старым" и использовать классические алгоритмы отрисовки шрифтов Tahoma и MS Sans Serif, которые чаще всего используются в обычных формах.

Решение 4: Корректировка свойств элементов в Конфигураторе

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

В свойствах поля ввода или ячейки табличного поля есть параметр "Отступ справа" (Horizontal Padding). По умолчанию он равен 0. Если мы установим значение 1 или 2, платформа принудительно добавит несколько пикселей свободного пространства между текстом и правой границей поля. Этого запаса обычно достаточно, чтобы компенсировать погрешность рендеринга GDI.

Пример программной установки отступа для всех колонок табличного поля:


Для Каждого Колонка Из ЭлементыФормы.ТабличноеПоле1.Колонки Цикл
    Колонка.ЭлементУправления.ОтступСправа = 1;
КонецЦикла;

Решение 5: Настройка глубины цвета в RDP

Выясним еще одну особенность протокола RDP на современных серверах. По умолчанию используется 32-битная глубина цвета. Это активирует дополнительные визуальные эффекты отрисовки, которые могут влиять на отображение шрифтов в устаревших приложениях.

Попробуем ограничить глубину цвета:

  1. В Редакторе групповых политик перейдем в Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Среда удаленных сеансов.
  2. Найдем параметр "Лимит максимальной глубины цвета" (Limit maximum color depth).
  3. Установим значение "Включено" и выберем 16 бит.

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

Подведем итоги

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

← На главную