Работа с устаревшими программными продуктами, такими как 1С:Предприятие 7.7, в современных инфраструктурах часто преподносит неприятные сюрпризы. Одной из наиболее распространенных проблем при использовании терминального доступа (RDP или RemoteApp) на современных мониторах с разрешением FullHD (1920x1080) и выше является некорректная отрисовка интерфейса. Пользователи сталкиваются с тем, что обновляется только небольшая часть окна (обычно левый верхний угол), а остальная область экрана замирает или остается «черной» до тех пор, пока окно не будет принудительно свернуто и развернуто.
В этой статье мы подробно разберем причины возникновения данной ошибки и рассмотрим по шагам проверенные способы ее решения, начиная от простых манипуляций с настройками системы и заканчивая правками реестра и оптимизацией протокола передачи данных.
Для начала проанализируем ситуацию и выясним причину такого поведения программы. Графическое ядро 1С 7.7 базируется на технологии GDI (Graphics Device Interface), которая создавалась еще в эпоху Windows 95/98. В те времена разрешения мониторов редко превышали 1024x768 пикселей. Современные протоколы удаленного рабочего стола используют сложные механизмы сжатия и аппаратного ускорения видеокарты (например, RemoteFX), которые не всегда корректно интерпретируют команды отрисовки старых GDI-приложений. Когда разрешение становится слишком большим, объем данных для перерисовки окна MDI (многодокументного интерфейса) 1С превышает определенные лимиты буферизации, и система «забывает» обновить часть кадра.
Как показала практика обсуждения на форуме, наиболее эффективным решением является настройка параметров масштабирования на стороне клиентского компьютера. Разберем по шагам, как это сделать:
1cv7.exe или 1cv7s.exe). Важно: если используется RemoteApp, эти действия необходимо выполнить на локальном компьютере, с которого запускается подключение.1cv7.exe и выберем пункт «Свойства».После этих манипуляций Windows будет передавать управление отрисовкой самому приложению, не пытаясь принудительно масштабировать его интерфейс средствами ОС, что в большинстве случаев решает проблему с «замерзанием» экрана.
Если первый способ не помог, проанализируем нагрузку на канал передачи графики. 1С 7.7 была оптимизирована для 16-битной цветопередачи. При использовании 32-битного цвета в разрешении 1920x1080 поток графических команд GDI становится избыточным.
Рассмотрим, как изменить настройки подключения:
Иногда проблема кроется в попытках сервера использовать видеокарту для ускорения старого софта. Посмотрим, как принудительно перевести отрисовку в программный режим через групповые политики:
Win + R и введем gpedit.msc.Существует более глубокая настройка реестра, которая регулирует частоту, с которой Windows Desktop Window Manager (DWM) обновляет содержимое окна в терминальной сессии. Выясним, как применить этот «хак»:
Откроем редактор реестра (regedit) на сервере и перейдем в ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
Создадим там параметр типа DWORD (32 бита) с названием DWMFRAMEINTERVAL. Попробуем установить десятичное значение 15 или 30. Это заставит систему чаще опрашивать окна на предмет необходимости перерисовки, что может «подтолкнуть» 1С 7.7 к обновлению невидимых зон экрана.
Если ваша конфигурация использует внешнюю компоненту FormEx (что очень часто встречается в доработанных базах 7.7), проблема может быть вызвана устаревшей версией этой библиотеки. FormEx глубоко вмешивается в процесс отрисовки форм (перехватывает сообщения WM_PAINT и другие).
Проанализируем программный код в глобальном модуле (процедура ПриНачалеРаботыСистемы):
ЗагрузитьВнешнююКомпоненту("FormEx.dll");
Сервис = СоздатьОбъект("Сервис");
// Проверьте версию или попробуйте временно отключить расширенные функции отрисовки
Рекомендуем обновить FormEx.dll до последней актуальной версии, где разработчики уже внесли исправления для работы на новых ОС и высоких разрешениях. Также в настройках объекта Сервис компоненты FormEx существуют методы принудительного обновления окна, которые можно вызвать при открытии тяжелых форм.
Резюме: В большинстве случаев комбинация изменения настроек DPI на клиенте (Способ 1) и установки 16-битной глубины цвета (Способ 2) полностью решает проблему «полэкрана» в 1С 7.7. Если же проблема сохраняется, следует обратить внимание на настройки групповых политик сервера, отвечающих за RemoteFX.