При интенсивной работе пользователей в 1С через терминальный сервер (RDP) часто возникает неприятная техническая проблема: интерфейс программы начинает разрушаться. Окна «залипают», формы перестают реагировать на нажатия, вместо кнопок и икон отображаются черные квадраты, а элементы интерфейса накладываются друг на друга, образуя визуальную кашу. Перезапуск 1С временно решает проблему, но через некоторое время сбой повторяется снова. Проанализируем причины этого явления и разберем эффективные варианты исправления ситуации.
Сбой отображения интерфейса наиболее часто проявляется в толстом клиенте на обычных формах (например, в конфигурации 1С:Управление торговлей 10.3). Проанализируем архитектурные особенности работы графической подсистемы Windows:
GDI и USER. При частом открытии и закрытии сложных форм или обработок процесс 1cv8.exe может не успевать освобождать выделенные графические ресурсы. Когда число дескрипторов процесса приближается к системному лимиту (по умолчанию 10 000 объектов), операционная система физически перестает отрисовывать новые графические элементы, что приводит к появлению черных квадратов вместо кнопок.Рассмотрим по шагам комплекс мероприятий для полного устранения этой проблемы.
Начнем с настройки параметров подключения на стороне RDP-клиента, так как сбои кэширования графики напрямую влияют на отображение кнопок и пиктограмм.
mstsc.exe) на вкладке «Взаимодействие» установим качество связи или выберем параметры, оптимизирующие передачу графики. Убедимся, что включен параметр Кэширование растровых изображений (Bitmap Caching).%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache
.bmc и .bin заставит RDP-клиент заново перекачать корректные изображения элементов управления с сервера.Взаимодействие RDP-протокола с аппаратным ускорением видеокарты сервера часто становится причиной порчи общего пула графических объектов терминальных сессий. Отключение аппаратного ускорения позволяет передать обработку графики стандартному программному рендерингу Windows.
Для предотвращения «голодания» процесса 1С по графическим хэндлам увеличим допустимое количество GDI-дескрипторов для процесса 1cv8.exe через системный реестр сервера.
regedit.exe) от имени администратора.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
GDIProcessHandleQuota: изменим значение с 10000 до 20000 или 30000 (максимально допустимое значение ОС составляет 65536).USERProcessHandleQuota: увеличим значение с 10000 до 18000.Увеличение этих показателей позволит процессу 1С удерживать в памяти большее количество одновременно открытых элементов интерфейса без потери их отрисовки.
Если пользователи одновременно открывают большое количество документов и отчетов в терминальных сессиях, необходимо увеличить размер памяти, выделяемой под графические объекты сеансов.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
Windows.SharedSection=XXXX,YYYY,ZZZZ.
Третье значение (ZZZZ) отвечает за размер кучи рабочего стола для неинтерактивных и терминальных сессий. Увеличим значение ZZZZ с дефолтных 512 или 1024 до 2048 или 4096 КБ.
Накопление временных файлов конфигурации также провоцирует сбои при повторном открытии форм. Выполним регулярную очистку пользовательских каталогов 1С на сервере терминалов:
%LOCALAPPDATA%\1C\1Cv8
%APPDATA%\1C\1Cv8
Проведенный комплекс настроек оптимизирует выделение графических ресурсов Windows, исключает дефицит GDI-объектов и полностью устраняет залипание окон и появление черных квадратов в 1С при работе через RDP.