Почему в 1С 7.7 при работе через RDP появляются кракозябры вместо текста и как это исправить?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При работе со старыми версиями программного обеспечения, такими как платформа 1С:Предприятие 7.7, в современных сетевых инфраструктурах часто возникают непредвиденные проблемы с отображением интерфейса. Одним из наиболее неприятных и мешающих работе сбоев является периодическое искажение шрифтов — появление так называемых «кракозябр», нечитаемых символов или пустых блоков в табличных частях документов, справочниках и формах подбора номенклатуры.

Особенность этой проблемы заключается в её нестабильности: программа может работать абсолютно нормально в течение нескольких часов, после чего интерфейс внезапно «ломается». Закрытие и повторное открытие сеанса RDP временно исправляет ситуацию, но через некоторое время искажения возвращаются. При этом проблема обычно локализована и проявляется лишь у единичных пользователей.

В этой статье мы подробно проанализируем технические причины возникновения этой неисправности и разберем по шагам все методы её гарантированного устранения.

Причина 1: Повреждение локального кэша растровых изображений RDP (Bitmap Caching)

Это самая частая причина периодического искажения шрифтов. Для экономии сетевого трафика и ускорения отрисовки интерфейса RDP-клиент кэширует часто используемые графические элементы (включая символы шрифтов, которые передаются на клиентскую машину в виде мелких картинок-битмапов) на локальном жестком диске пользователя. Если у пользователя нестабильное сетевое подключение (микросбои, потери пакетов на Wi-Fi или загруженном канале), передаваемый кэш повреждается. При перезапуске сессии память очищается, но при повторном обращении к дефектному файлу кэша на диске «кракозябры» появляются снова.

Выясним, как полностью отключить эту функцию и очистить поврежденные файлы:

  1. Полностью завершите сеанс удаленного рабочего стола проблемного пользователя (выполните выход/Logoff, а не просто закрытие крестиком).
  2. На клиентском компьютере (где запущена Windows 10) откройте проводник и перейдите в каталог кэша удаленного стола: %localappdata%\Microsoft\Terminal Server Client\Cache.
  3. Удалите все файлы с расширением .bin (например, Cache0000.bin). Это принудительно сотрет поврежденную графику из локальной памяти.
  4. Запустите стандартное подключение к удаленному рабочему столу (mstsc.exe).
  5. В окне подключения нажмите кнопку «Показать параметры», перейдите на вкладку «Взаимодействие» (Experience).
  6. Найдите и снимите галочку с пункта «Постоянное кэширование точечных рисунков» (Persistent bitmap caching).
  7. Вернитесь на вкладку «Общие» и сохраните настройки подключения в ваш RDP-файл.

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


bitmapcachepersistenable:i:0
smart sizing:i:1

Причина 2: Проблемы масштабирования экрана (DPI) в Windows 10

Платформа 1С 7.7 разрабатывалась во времена, когда стандартными шрифтами интерфейса были растровые шрифты фиксированного размера, такие как MS Sans Serif. Эти шрифты физически не умеют корректно масштабироваться. Если у пользователя на локальном компьютере с Windows 10 установлен масштаб экрана отличный от 100% (например, 125% или 150% на современных Full HD или 4K мониторах), то при передаче графического потока через RDP на сервер (особенно если в роли сервера выступает Windows 7 с установленным VITerminal) шрифты начинают отображаться некорректно.

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

  1. Попробуйте временно установить масштаб экрана на клиентском компьютере под управлением Windows 10 ровно на 100% и проверьте, воспроизводится ли проблема.
  2. Если использовать 100% масштаб неудобно из-за мелкого текста на мониторе, настройте поведение ярлыка подключения. Кликните правой кнопкой мыши по ярлыку подключения RDP (или по файлу C:\Windows\System32\mstsc.exe) и выберите «Свойства».
  3. Перейдите на вкладку «Совместимость» и нажмите кнопку «Изменить параметры высокого DPI».
  4. Установите флажок в поле «Переопределение масштабирования с высоким разрешением» и в выпадающем списке выберите режим «Приложение» или «Система». Это заставит операционную систему корректно обрабатывать отрисовку окон без принудительного размытия растровых шрифтов.

Причина 3: Включенная системная настройка UTF-8 (Beta) в Windows 10

В современных сборках Windows 10 присутствует экспериментальная функция, переводящая работу программ, не поддерживающих Юникод, на кодировку UTF-8. 1С 7.7 является классическим "non-Unicode" приложением, жестко завязанным на системную кодовую страницу 1251 (кириллица). Включение этой бета-функции гарантированно приводит к хаотичному появлению кракозябр в интерфейсах старых программ.

Рассмотрим, как проверить и отключить эту настройку на компьютере пользователя:

  1. Откройте классическую Панель управления на клиентском ПК и перейдите в раздел «Региональные стандарты».
  2. Перейдите на вкладку «Дополнительно» и нажмите кнопку «Изменить язык системы...».
  3. Убедитесь, что в качестве текущего языка системы установлен «Русский (Россия)».
  4. Обратите внимание на чекбокс «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире». Если там стоит галочка — обязательно снимите её.
  5. Нажмите «ОК» и перезагрузите компьютер для применения изменений.

Причина 4: Использование нестабильного сетевого протокола UDP в RDP

Современные версии Windows 10 по умолчанию пытаются использовать протокол UDP поверх TCP для передачи данных удаленного рабочего стола. Это значительно ускоряет отклик интерфейса и воспроизведение видео. Однако, если на физическом сетевом оборудовании (роутеры, коммутаторы) или у интернет-провайдера происходят микропотери UDP-пакетов, графический поток RDP начинает терять ключевые кадры отрисовки. В результате текст превращается в кашу из пикселей или искаженные символы.

Для решения этой проблемы переведем работу RDP-клиента строго на надежный протокол TCP:

  1. Нажмите сочетание клавиш Win + R, введите команду gpedit.msc и нажмите Enter для запуска Редактора локальной групповой политики.
  2. Перейдите по следующему пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Клиент подключения к удаленному рабочему столу.
  3. Найдите политику с названием «Выключение UDP на клиенте» (Turn Off UDP On Client).
  4. Дважды кликните по ней, переведите переключатель в положение «Включено» и нажмите «ОК». Теперь клиент будет подключаться только по стабильному TCP-протоколу.

Причина 5: Сбой системного кэша шрифтов Windows

Если проблема не уходит, возможной причиной является повреждение файла кэша шрифтов FNTCACHE.DAT на стороне сервера (в данном случае Windows 7 Pro с VITerminal) или клиента. Система считывает поврежденные индексы шрифтов, из-за чего подставляет неверные символы.

Выполним процедуру сброса кэша шрифтов:

  1. Откройте оснастку управления службами (команда services.msc).
  2. Найдите службу «Служба кэша шрифтов Windows» (Windows Font Cache Service), нажмите по ней правой кнопкой мыши и выберите «Остановить».
  3. Откройте проводник и перейдите в папку C:\Windows\System32\.
  4. Найдите файл с именем FNTCACHE.DAT и удалите его (при необходимости можно предварительно сделать его резервную копию).
  5. Запустите остановленную службу кэша шрифтов обратно или просто перезагрузите операционную систему. Файл кэша автоматически пересоздастся в чистом и корректном виде.

Дополнительные рекомендации по настройке 1С 7.7

Для минимизации проблем с отображением элементов управления на стороне конфигурации 1С 7.7, убедитесь, что во всех критически важных печатных формах и интерфейсных таблицах используются стандартные шрифты без экзотического форматирования. В качестве превентивной меры рассмотрим пример программного изменения параметров отображения шрифтов в формируемых табличных документах:


// Пример принудительной установки стандартного шрифта в коде 1С 7.7
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("РеестрДокументов");
// Установка безопасного шрифта Arial для предотвращения сбоев рендеринга
ИмяБезопасногоШрифта = "Arial";
РазмерШрифта = 9;
Таб.Область(1, 1, 50, 20).Шрифт(ИмяБезопасногоШрифта, РазмерШрифта);

Применение комплекса изложенных мер — в первую очередь отключение локального кэширования графики RDP и исправление масштабирования DPI — позволяет полностью ликвидировать проблему «кракозябр» и вернуть стабильную, комфортную работу пользователей в терминальных сессиях.

← На главную