Проблема некорректного отображения масштаба, размытых шрифтов или разного размера элементов интерфейса в рамках одной RDP-сессии — это классическая «головная боль» при работе с 1С:Предприятием. Особенно часто это проявляется, когда пользователь подключается с современного ноутбука с высоким разрешением (Full HD и выше) и установленным масштабом 125% или 150% на сервер под управлением Windows Server 2012 R2 или более ранних версий. Ситуация осложняется, если внутри одной сессии запускаются несколько экземпляров программы от имени разных пользователей, и каждый из них выглядит по-своему.
В этой статье мы подробно разберем, почему так происходит, и проанализируем пошаговые методы устранения этих аномалий.
Давайте выясним причину такого поведения системы. Основная сложность заключается в механизме передачи параметров DPI (Dots Per Inch) от клиентской машины к серверу. Windows Server 2012 R2 проектировалась в то время, когда мониторы с высокой плотностью пикселей еще не были стандартом, поэтому она плохо справляется с динамическим изменением масштаба «на лету».
Когда вы подключаетесь по RDP, клиент передает серверу свои настройки разрешения и масштабирования. Однако, если в рамках одной сессии вы используете функцию «Запустить от имени другого пользователя», новый процесс начинает считывать настройки персонализации из профиля именно этого «второго» пользователя. Если в его ветке реестра на сервере сохранены старые параметры отрисовки, мы получаем визуальный диссонанс: одна программа выглядит нормально, а вторая — слишком мелко или слишком крупно.
Рассмотрим подробнее способы решения этой проблемы, начиная от настроек платформы и заканчивая манипуляциями с операционной системой.
Начиная с версии платформы 8.3.10, компания 1С добавила механизмы поддержки High DPI. Однако автоматика не всегда работает корректно в терминальной среде. Мы можем принудительно указать платформе, как ей следует обрабатывать системное масштабирование.
Для этого нам понадобится отредактировать файл conf.cfg. Разберем по шагам:
C:\Program Files\1cv8\conf или C:\Program Files (x86)\1cv8\conf).conf.cfg.Посмотрим на пример содержимого файла:
conf.cfg
ForceDPIAware=1
Проанализируем значения этого параметра:
Если манипуляции с conf.cfg не помогли, нам стоит рассмотреть возможность переопределения режима масштабирования на уровне свойств исполняемого файла Windows. Это особенно эффективно, когда у разных пользователей в одной сессии шрифты отображаются по-разному.
Проделаем следующие действия:
1cv8.exe (в папке bin соответствующей версии).Почему это важно? Выбор режима «Приложение» заставляет Windows передать управление отрисовкой самой программе 1С. Если же выбрать «Система», то масштабированием займется ОС, что в RDP-сессиях часто приводит к размытию текста.
Как мы выяснили ранее, если запуск 1С производится под разными учетными записями, настройки берутся из реестра конкретного профиля. Выясним причину разницы через реестр. Нам нужно проверить параметр LogPixels, который отвечает за количество точек на дюйм.
Рассмотрим путь в реестре:
HKEY_CURRENT_USER\Control Panel\Desktop
Если мы обнаружим там параметр LogPixels, его значение определяет масштаб:
Чтобы шрифты у всех пользователей в рамках одной RDP-сессии стали одинаковыми, необходимо привести это значение к единому знаменателю во всех профилях на сервере. Рекомендуется установить стандартные 96 DPI, чтобы избежать конфликтов с RDP-протоколом.
Иногда 1С «запоминает» индивидуальные настройки масштаба для конкретных форм или пользователей. Даже если мы изменим системные настройки, программа может продолжать открывать окна в старом виде. В таких случаях мы рекомендуем выполнить полную очистку кэша.
Помимо стандартного удаления папок из %AppData%\1C\1cv8, обратите внимание на файл appsizes.json, если он присутствует в профиле. Также полезно зайти в саму 1С и проверить настройки через меню «Вид» -> «Изменить масштаб». Если там установлено значение, отличное от «Установить для всех», 1С будет применять его приоритетно. Для быстрой настройки компактного или обычного режима отображения у пользователей подойдёт обработка для переключения интерфейса пользователя.
Для системных администраторов есть еще один мощный инструмент — групповые политики. В Windows Server 2012 R2 существует настройка, которая может влиять на аппаратное ускорение и отрисовку шрифтов в удаленных сессиях.
Проанализируем путь в редакторе gpedit.msc:
Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Среда удаленного сеанса
Здесь стоит обратить внимание на политику «Использовать аппаратный графический адаптер для всех сеансов служб удаленных рабочих столов». В некоторых конфигурациях ее включение (или, наоборот, выключение) помогает стабилизировать отрисовку шрифтов в приложениях, использующих современные графические библиотеки.
Мы рассмотрели комплексный подход к решению проблемы масштабирования 1С в RDP. Если вы столкнулись с разным размером шрифтов у разных пользователей под одной сессией, наиболее вероятным решением будет приведение параметра LogPixels в реестре к значению 96 и настройка совместимости DPI для исполняемого файла 1cv8.exe.
Помните, что после внесения изменений в реестр или настройки совместимости, необходимо полностью завершить RDP-сессию (Log off), а не просто закрыть окно крестиком, чтобы параметры вступили в силу при новом входе в систему.