При работе со старыми версиями программного обеспечения, такими как платформа 1С:Предприятие 7.7, в современных сетевых инфраструктурах часто возникают непредвиденные проблемы с отображением интерфейса. Одним из наиболее неприятных и мешающих работе сбоев является периодическое искажение шрифтов — появление так называемых «кракозябр», нечитаемых символов или пустых блоков в табличных частях документов, справочниках и формах подбора номенклатуры.
Особенность этой проблемы заключается в её нестабильности: программа может работать абсолютно нормально в течение нескольких часов, после чего интерфейс внезапно «ломается». Закрытие и повторное открытие сеанса RDP временно исправляет ситуацию, но через некоторое время искажения возвращаются. При этом проблема обычно локализована и проявляется лишь у единичных пользователей.
В этой статье мы подробно проанализируем технические причины возникновения этой неисправности и разберем по шагам все методы её гарантированного устранения.
Это самая частая причина периодического искажения шрифтов. Для экономии сетевого трафика и ускорения отрисовки интерфейса RDP-клиент кэширует часто используемые графические элементы (включая символы шрифтов, которые передаются на клиентскую машину в виде мелких картинок-битмапов) на локальном жестком диске пользователя. Если у пользователя нестабильное сетевое подключение (микросбои, потери пакетов на Wi-Fi или загруженном канале), передаваемый кэш повреждается. При перезапуске сессии память очищается, но при повторном обращении к дефектному файлу кэша на диске «кракозябры» появляются снова.
Выясним, как полностью отключить эту функцию и очистить поврежденные файлы:
%localappdata%\Microsoft\Terminal Server Client\Cache..bin (например, Cache0000.bin). Это принудительно сотрет поврежденную графику из локальной памяти.mstsc.exe).Если вы хотите распространить эти настройки через файл конфигурации подключения .rdp, откройте его с помощью Блокнота и убедитесь, что параметр кэширования отключен:
bitmapcachepersistenable:i:0
smart sizing:i:1
Платформа 1С 7.7 разрабатывалась во времена, когда стандартными шрифтами интерфейса были растровые шрифты фиксированного размера, такие как MS Sans Serif. Эти шрифты физически не умеют корректно масштабироваться. Если у пользователя на локальном компьютере с Windows 10 установлен масштаб экрана отличный от 100% (например, 125% или 150% на современных Full HD или 4K мониторах), то при передаче графического потока через RDP на сервер (особенно если в роли сервера выступает Windows 7 с установленным VITerminal) шрифты начинают отображаться некорректно.
Проанализируем шаги по настройке совместимости масштабирования:
C:\Windows\System32\mstsc.exe) и выберите «Свойства».В современных сборках Windows 10 присутствует экспериментальная функция, переводящая работу программ, не поддерживающих Юникод, на кодировку UTF-8. 1С 7.7 является классическим "non-Unicode" приложением, жестко завязанным на системную кодовую страницу 1251 (кириллица). Включение этой бета-функции гарантированно приводит к хаотичному появлению кракозябр в интерфейсах старых программ.
Рассмотрим, как проверить и отключить эту настройку на компьютере пользователя:
Современные версии Windows 10 по умолчанию пытаются использовать протокол UDP поверх TCP для передачи данных удаленного рабочего стола. Это значительно ускоряет отклик интерфейса и воспроизведение видео. Однако, если на физическом сетевом оборудовании (роутеры, коммутаторы) или у интернет-провайдера происходят микропотери UDP-пакетов, графический поток RDP начинает терять ключевые кадры отрисовки. В результате текст превращается в кашу из пикселей или искаженные символы.
Для решения этой проблемы переведем работу RDP-клиента строго на надежный протокол TCP:
Win + R, введите команду gpedit.msc и нажмите Enter для запуска Редактора локальной групповой политики.Если проблема не уходит, возможной причиной является повреждение файла кэша шрифтов FNTCACHE.DAT на стороне сервера (в данном случае Windows 7 Pro с VITerminal) или клиента. Система считывает поврежденные индексы шрифтов, из-за чего подставляет неверные символы.
Выполним процедуру сброса кэша шрифтов:
services.msc).C:\Windows\System32\.FNTCACHE.DAT и удалите его (при необходимости можно предварительно сделать его резервную копию).Для минимизации проблем с отображением элементов управления на стороне конфигурации 1С 7.7, убедитесь, что во всех критически важных печатных формах и интерфейсных таблицах используются стандартные шрифты без экзотического форматирования. В качестве превентивной меры рассмотрим пример программного изменения параметров отображения шрифтов в формируемых табличных документах:
// Пример принудительной установки стандартного шрифта в коде 1С 7.7
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("РеестрДокументов");
// Установка безопасного шрифта Arial для предотвращения сбоев рендеринга
ИмяБезопасногоШрифта = "Arial";
РазмерШрифта = 9;
Таб.Область(1, 1, 50, 20).Шрифт(ИмяБезопасногоШрифта, РазмерШрифта);
Применение комплекса изложенных мер — в первую очередь отключение локального кэширования графики RDP и исправление масштабирования DPI — позволяет полностью ликвидировать проблему «кракозябр» и вернуть стабильную, комфортную работу пользователей в терминальных сессиях.