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

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

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

Выясним причину графических сбоев в терминальном режиме

Сбой отображения интерфейса наиболее часто проявляется в толстом клиенте на обычных формах (например, в конфигурации 1С:Управление торговлей 10.3). Проанализируем архитектурные особенности работы графической подсистемы Windows:

  1. Исчерпание лимита GDI-объектов (GDI Handles): Каждый элемент обычной формы 1С (кнопка, поле ввода, надпись, ячейка таблицы, контекстное меню) задействует системные графические дескрипторы GDI и USER. При частом открытии и закрытии сложных форм или обработок процесс 1cv8.exe может не успевать освобождать выделенные графические ресурсы. Когда число дескрипторов процесса приближается к системному лимиту (по умолчанию 10 000 объектов), операционная система физически перестает отрисовывать новые графические элементы, что приводит к появлению черных квадратов вместо кнопок.
  2. Дефицит кучи рабочего стола (Desktop Heap): Терминальный сервер выделяет ограниченный объем памяти под графическую кучу для каждого интерактивного сеанса. При активной работе множества пользователей или открытии десятков окон внутри сеанса эта память исчерпывается.
  3. Ошибки кэширования и видеодрайвера: Взаимодействие видеодрайвера сервера с подсистемой сжатия RDP-трафика может вызывать сбои при передаче bitmap-картинок на клиентское устройство. Ошибки в локальном кэше RDP-клиента приводят к закреплению поврежденных графических фрагментов на экране.

Рассмотрим по шагам комплекс мероприятий для полного устранения этой проблемы.

Шаг 1. Оптимизируем настройки RDP-клиента и кэширования

Начнем с настройки параметров подключения на стороне RDP-клиента, так как сбои кэширования графики напрямую влияют на отображение кнопок и пиктограмм.

  1. Включим локальное кэширование и настроим качество: В параметрах подключения Remote Desktop Connection (mstsc.exe) на вкладке «Взаимодействие» установим качество связи или выберем параметры, оптимизирующие передачу графики. Убедимся, что включен параметр Кэширование растровых изображений (Bitmap Caching).
  2. Очистим кэш RDP на клиентском компьютере: Поврежденный файл растрового кэша может дублировать артефакты при каждом новом подключении. Закроем терминальные сеансы и удалим содержимое каталога на клиентской машине:

    %LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache

    Удаление файлов с расширениями .bmc и .bin заставит RDP-клиент заново перекачать корректные изображения элементов управления с сервера.

Шаг 2. Отключим аппаратное ускорение на сервере

Взаимодействие RDP-протокола с аппаратным ускорением видеокарты сервера часто становится причиной порчи общего пула графических объектов терминальных сессий. Отключение аппаратного ускорения позволяет передать обработку графики стандартному программному рендерингу Windows.

  1. Перейдем на сервере в меню Панель управления > Экран > Параметры экрана > Дополнительно > Диагностика.
  2. Нажмем кнопку Изменить параметры и переведем ползунок Аппаратное ускорение в положение Нет (Отключено).
  3. Сохраним изменения и перезагрузим сервер приложений для применения настроек графической подсистемы.

Шаг 3. Увеличим лимиты GDI и USER объектов в реестре Windows

Для предотвращения «голодания» процесса 1С по графическим хэндлам увеличим допустимое количество GDI-дескрипторов для процесса 1cv8.exe через системный реестр сервера.

  1. Откроем редактор реестра (regedit.exe) от имени администратора.
  2. Перейдем в раздел:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows

  3. Найдем и скорректируем следующие параметры (в десятичной системе счисления):
    • GDIProcessHandleQuota: изменим значение с 10000 до 20000 или 30000 (максимально допустимое значение ОС составляет 65536).
    • USERProcessHandleQuota: увеличим значение с 10000 до 18000.

Увеличение этих показателей позволит процессу 1С удерживать в памяти большее количество одновременно открытых элементов интерфейса без потери их отрисовки.

Шаг 4. Настроим размер кучи рабочего стола (Desktop Heap)

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

  1. В редакторе реестра перейдем к разделу:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

  2. Откроем для редактирования многострочный параметр Windows.
  3. Найдем в строке подпараметр SharedSection=XXXX,YYYY,ZZZZ.

    Третье значение (ZZZZ) отвечает за размер кучи рабочего стола для неинтерактивных и терминальных сессий. Увеличим значение ZZZZ с дефолтных 512 или 1024 до 2048 или 4096 КБ.

  4. Перезагрузим сервер для вступления изменений в силу.

Шаг 5. Очистим временные файлы и кэш 1С

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

  1. Завершим работу всех сеансов 1С.
  2. Удалим содержимое каталогов с временными файлами для каждого пользователя:

    %LOCALAPPDATA%\1C\1Cv8

    %APPDATA%\1C\1Cv8

  3. Для автоматизации этого процесса настроим скрипт очистки кэша при входе пользователя или настроим регламентную перезагрузку терминального сервера во внерабочее время.

Проведенный комплекс настроек оптимизирует выделение графических ресурсов Windows, исключает дефицит GDI-объектов и полностью устраняет залипание окон и появление черных квадратов в 1С при работе через RDP.

← На главную