Добрый день.
Помогите пожалуйста решить проблему с установкой 96 DPI при терминальном доступе к 2012R2 серверу.
"Интеллектуальное измерение размера" ставил.
LogPixels в реестре на 60 ставил.
1С запускается с галочкой "Отключить масштабирование изображения при высоком разрешении экрана"
И все равно при открытии любой формы возникает сообщение "Разработку форм рекомендуется выполнять в разрешении 96 DPI".
По форуму находил фиксы для 2008 сервера.
Что ещё можно предпринять?
Платформа 8.3.8.1652
Windows Server 2012 R2 Standart, 64х разрядный.
Решена подобная проблема со следующими вводными параметрами.
1. В качестве терминального сервера Windows Server 2016 Standart 1607.
2. Клиент RDP подключается из Windows 10 LTSC.
3. У клиента разрешение 1920х1080. Текст увеличен до 150%.
4. Галочка "отключить масштабирование изображения при высоком разрешении экрана" на закладке "совместимость" ярлыка 1С на рабочем столе терминального сервера - отключена.
5. При выходе пользователя через кнопку "Пуск" сеанс не завершается, а лишь только отключается.
6. Если сеанс принудительно завершить администратором, или перезагрузкой сервера, то проблема снова появляется.
Порядок действий такой:
1. Сбросил масштабирование размера текста на своём рабочем столе до 100%.
2. Зашёл в новый (! не бывший отключенным ранее) сеанс RDP.
3. Вышел с отключением (!) сеанса.
4. Установил у себя масштабирование текста на 150%.
5. Подключился к серверу с автоматическим восстановлением ранее отключенного сеанса.
6. Запускаю 1С. Шрифты в 1С большие, хорошо читаемые. Формы никаких жалоб по поводу 96 dpi не выдают. Поля при их размещении на форме как неадекватные не прыгают.
На самом деле, 1С проверяет метрики шрифта DEFAULT_GUI_FONT, который получает через функцию GetStockObject. В windows и wine это растровый MS Shell Dlg, который в реестре подменяется на векторный Microsoft Sans Serif.
Если шрифт MS Shell Dlg вместо Microsoft Sans Serif заменять на Tahoma, то ошибка воспроизводиться и в windows. Очевидно это баг в 1С - привязываться к метрикам конкретного шрифта Microsoft Sans Serif. Ведь MS Shell Dlg может заменять любой шрифт.
Эта проблема со шрифтом, как я понимаю, впервые была обнаружена на Unix.
Можно решить вопрос батником который перед стартом 1с меняет разрешение 96 dpi, после закрытия 1С возвращает стандартные настройки с помощью nircmd, что то типа 1cv8_96DPI.cmd:
Мне удалось после многочисленных танцов с бубном просто немного изменить местоположение реквизита на форме и сохранить ее на разрешении 96DPI. При этом границы привязки я не менял. После этого у всех пользователей стало все открываться как положено.
Сообщение тоже пропало после этого.
Не знаю почему тут пишут про разрешение экрана.
Эта ошибка никак не зависит от разрешения - проверено 100 раз и не важно терминально или локально работаете.
Ошибка возникает всегда при изменении размера текста с рекомендуемых 100% на более высокий.
Собственно я всю жизнь работал на разных разрешениях, но всегда на 100% размере текста и таких сообщений не появлялось.
Теперь купил моник 2560х1440 27 дюймов, поставил его далеко (на расстоянии двух вытянутых рук) и понятное дело что шрифт стал маленький. Поэтому с рекомендуемых 100% выставил 125% и после этого формы заругались.
Единственное решение что я нашел это в свойствах ярлыка запуска 1С во вкладке совместимость поставить галку "Переопределите режим ..." и выбрать Система. Но при таком решении шрифт на формах и на боковой панели выглядит убого.
В общем, так понимаю, что нормального решения (из коробки) нет и не будет.
А всё потому что 1С забила на обычные формы (при этом конфигуратор то на обычных формах). Кучу "полезняшек" никому не нужных добавляет, а "устаревшие" формы сделать по человечески принципиально не будет. Потому что она так решила - это её стратегическое решение.