При переносе старых информационных баз на платформе 1С:Предприятие 7.7 на современные операционные системы системные администраторы часто сталкиваются с неприятным эффектом. На рабочем сервере под управлением Windows Server 2012 R2 (или новее) при подключении пользователей по RDP или через RemoteApp интерфейс программы выглядит размытым, шрифты кажутся «замыленными» или «грязными», а стандартная галочка в свойствах ярлыка «Отключить масштабирование изображения при высоком разрешении экрана» не дает никакого эффекта.
В этой статье мы подробно разберем природу данной проблемы, выясним, почему операционная система так ведет себя с устаревшим софтом, и рассмотрим пошаговые методы устранения этого дефекта как на стороне сервера, так и на стороне клиента.
Давайте проанализируем, почему это происходит. Платформа 1С 7.7 была разработана в эпоху, когда стандартным разрешением мониторов было 1024x768 пикселей. Данное приложение классифицируется операционной системой Windows как DPI-Unaware. Это означает, что программа ничего не знает о плотности пикселей современных мониторов и не умеет самостоятельно пересчитывать размеры своих элементов под высокие разрешения (например, FullHD или 4K).
Когда современный клиентский компьютер с операционной системой Windows 10 или 11 (где по умолчанию часто установлено масштабирование экрана 125% или 150%) подключается к терминальному серверу Windows Server 2012 R2 по RDP, клиент передает информацию о своем масштабе серверу. Сервер пытается принудительно адаптировать интерфейс 1С 7.7 под этот масштаб. Поскольку сама платформа 1С 7.7 не умеет перерисовывать шрифты в векторном виде, операционная система применяет к ней механизм DPI-виртуализации — она просто растягивает готовую растровую картинку (как обычное изображение формата JPEG или PNG). В результате получается сильно размытый интерфейс, работать в котором физически тяжело.
Выясним, как обойти это ограничение и вернуть шрифтам идеальную четкость. Мы подготовили несколько эффективных решений.
Самый надежный способ решить проблему глобально для всех терминальных пользователей — запретить операционной системе Windows Server 2012 R2 автоматически перенимать масштаб дисплея с локальных компьютеров пользователей. В этом случае сервер всегда будет отдавать картинку со стандартным масштабом 100% (96 DPI), что гарантирует идеальную четкость шрифтов.
Разберем по шагам, как внести необходимые изменения в реестр сервера:
regedit и нажмите Enter для запуска Редактора реестра.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
IgnoreClientDesktopScaleFactor.1 (в шестнадцатеричной или десятичной системе — неважно).После активации этого параметра сервер перестанет обращать внимание на локальный масштаб ноутбука или ПК пользователя, и интерфейс 1С 7.7 станет абсолютно четким.
Если после отключения масштабирования интерфейс программы стал слишком мелким на экранах с высоким разрешением, мы можем точечно задать качественный фиксированный масштаб на сервере, который будет отображаться корректно и без размытия.
Для этого мы воспользуемся изменением параметра LogPixels в реестре конкретного пользователя на сервере:
HKEY_CURRENT_USER\Control Panel\Desktop
LogPixels. Если его нет, создайте его с типом DWORD (32 бита).96 соответствует масштабу 100% (стандартный размер, максимальная четкость).120 соответствует масштабу 125%.144 соответствует масштабу 150%.Win8DpiScaling (если его нет, создайте DWORD) и установите его значение равным 1 для принудительного включения единого метода масштабирования Windows.Многие администраторы замечают, что попытка установить галочку «Отключить масштабирование изображения при высоком разрешении экрана» непосредственно в свойствах файла 1cv7.exe на вкладке «Совместимость» внутри терминальной сессии ни к чему не приводит. Это известное ограничение RDP-сессий Windows Server: графический интерфейс настройки совместимости часто игнорируется для терминальных пользователей.
Чтобы обойти эту проблему, мы можем прописать параметры совместимости исполняемого файла напрямую в реестр операционной системы сервера.
Вариант А: Применение настройки для конкретного пользователя
Перейдите в ветку реестра текущего пользователя:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Создайте Строковый параметр (REG_SZ), где в качестве имени укажите полный путь к исполняемому файлу вашей платформы 1С 7.7, а в качестве значения — параметр совместимости:
C:\Program Files (x86)\1Cv77\bin\1cv7.exe (укажите ваш реальный путь)~ HIGHDPIAWARE (обратите внимание на символ тильды и пробел перед словом)Вариант Б: Применение настройки для всех пользователей сервера сразу
Если баз много и за ними работает большое количество сотрудников, лучше прописать этот ключ в ветку для всего компьютера (потребуются права администратора):
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Создайте аналогичный строковый параметр с путем к 1cv7.exe и значением ~ HIGHDPIAWARE. Это принудительно отключит DPI-виртуализацию для исполняемого файла платформы у всех пользователей.
Рассмотрим ситуацию, когда у вас нет возможности или прав редактировать реестр на самом сервере Windows Server 2012 R2. В этом случае мы можем решить проблему локально на клиентском компьютере (например, на домашнем ноутбуке под управлением Windows 10/11), заставив сам встроенный клиент подключения к удаленному рабочему столу (mstsc.exe) обрабатывать масштабирование силами локальной видеокарты без замыливания текста.
Для реализации этого метода выполните следующие шаги на локальном ПК пользователя:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
PreferExternalManifest и присвойте ему значение 1. Это заставит операционную систему Windows при запуске программ искать рядом с ними файлы конфигурации (манифесты) и приоритетно использовать их настройки.C:\Windows\System32.mstsc.exe.manifest (убедитесь, что у файла расширение именно .manifest, а не .txt). Для создания файла в этой директории вам потребуются права администратора.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
Еще один элегантный способ — скорректировать параметры запуска самого ярлыка подключения к удаленному рабочему столу. Если ваши пользователи используют заготовленный файл с расширением .rdp, его можно отредактировать в текстовом редакторе:
desktopscalefactor:i:100
smart sizing:i:1
desktopscalefactor:i:100 принудительно заставит терминальный сеанс запуститься со стандартным масштабом в 100%, игнорируя настройки экрана клиента. Интерфейс 1С станет очень четким, хоть элементы и могут стать физически меньше.smart sizing:i:1 позволит вам свободно растягивать окно подключения к удаленному рабочему столу на локальном экране, при этом масштабирование будет происходить на стороне вашей локальной видеокарты, минимизируя эффект размытия.По умолчанию конфигурации 1С 7.7 используют очень старые растровые системные шрифты (например, MS Sans Serif), которые изначально плохо поддаются любому масштабированию. Даже при качественной работе RDP-сервера эти шрифты могут выглядеть прерывистыми или мелкими.
Мы рекомендуем зайти в саму программу под каждым пользователем и переопределить шрифты интерфейса на более современные векторные аналоги:
Таким образом, комбинируя отключение наследования клиентского масштаба на сервере через параметр IgnoreClientDesktopScaleFactor и настраивая векторные шрифты внутри самой программы, мы получаем полностью рабочую, быструю и, главное, комфортную для глаз среду работы в legacy-платформе 1С 7.7 на современной серверной операционной системе.