Работа в режиме RemoteApp является одним из наиболее удобных способов доставки приложений пользователям, однако связка Windows Server 2016 и платформы 1С:Предприятие 8.3 часто преподносит неприятные сюрпризы. Одной из самых острых проблем является внезапное зависание интерфейса программы. Пользователь запускает базу, доходит до начальной страницы, и в этот момент окно перестает реагировать на клики мыши и нажатия клавиш. При этом на самом сервере процесс активен, а у других пользователей, работающих в полноценном RDP-сеансе, проблем может не наблюдаться.
В этой статье мы подробно разберем, почему возникают такие «мертвые» зависания, проанализируем влияние версии платформы 1С на стабильность работы в терминальной среде и рассмотрим комплекс системных мер для восстановления работоспособности системы.
Рассмотрим ситуацию, с которой столкнулись многие администраторы: после обновления платформы 1С до версий 8.3.17, 8.3.18 и выше, количество зависаний в RemoteApp резко увеличилось. Проанализируем причину этого явления. Начиная с версии 8.3.17, разработчики 1С внедрили обновленные механизмы работы с веб-компонентами и графическим интерфейсом, которые стали более требовательны к видеоподсистеме.
В терминальной среде Windows Server 2016, особенно если сервер не оснащен мощной дискретной видеокартой с поддержкой RemoteFX, программная отрисовка новых компонентов 1С конфликтует с протоколом передачи изображения RemoteApp. Это приводит к тому, что окно приложения отрисовывается не полностью или «застывает», хотя логика программы продолжает работать.
Решение через откат версии: Как показывает практика и опыт участников обсуждения, наиболее быстрым и эффективным решением является возврат на стабильную ветку платформы. Разберем этот шаг:
8.3.18.XXXX) с сервера приложений.8.3.16.XXXX (например, последние релизы этой ветки).Если специфика вашей конфигурации требует использования только новых версий платформы (например, из-за требований последних релизов 1С:Бухгалтерии), нам необходимо принудительно изменить поведение графического движка 1С. По умолчанию программа пытается задействовать ресурсы видеокарты, которых в виртуальной среде или на обычном сервере может быть недостаточно.
Выясним, как отключить аппаратное ускорение. Для этого нам понадобится внести изменения в файл настроек conf.cfg. Проделаем следующие действия:
C:\Program Files\1cv8\conf (или C:\Program Files (x86)\1cv8\conf).conf.cfg с помощью текстового редактора от имени администратора.
HardwareAccelerationMode=0
Эта настройка заставляет 1С использовать исключительно программный рендеринг интерфейса. Это снимает нагрузку с графического драйвера RemoteApp и устраняет ошибки отрисовки модальных окон и начальных страниц, которые часто и являются причиной «зависания».
Проанализируем сетевую составляющую. Windows Server 2016 по умолчанию пытается оптимизировать передачу данных в RDP-сессиях, используя протокол UDP. Однако в нестабильных сетях или при специфических настройках брандмауэра пакеты UDP могут теряться или приходить с задержкой. В режиме RemoteApp это выглядит как полная потеря фокуса или зависание картинки: вы нажимаете на кнопку, но ничего не происходит, так как подтверждение клика «зависло» в сетевом стеке.
Разберем, как принудительно переключить терминальный сервер на использование только TCP. Это можно сделать через групповые политики (GPO):
Win + R, введем gpedit.msc и нажмем Enter.Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Среда удаленных сеансов.После применения этой политики (команда gpupdate /force) сессии станут более устойчивыми к микроразрывам связи, что часто лечит проблему «замирания» окон RemoteApp.
В рассматриваемой ситуации базы 1С являются файловыми. Это создает дополнительный пласт проблем, связанных с механизмом Opportunistic Locking (OpLocks). Когда 1С открывает файл базы .1CD, операционная система может предоставить одному пользователю эксклюзивное право на кэширование этого файла. Если в этот момент второй пользователь (через тот же сервер RemoteApp) пытается обратиться к базе, возникает конфликт блокировок, который внешне выглядит как «зависание» программы на этапе заставки или загрузки рабочего стола.
Посмотрим, какие меры стоит предпринять для оптимизации работы с файловыми базами:
*.1CD, но и служебные файлы: *.1cv8.tmp, *.lgp, *.v8i, а также папку с кэшем пользователя.1С:Сервер МИНИ на 5 подключений или полноценного сервера 1С в связке с бесплатной СУБД PostgreSQL. Это кардинально решит проблему блокировок и «зависаний» интерфейса.Иногда причиной зависания 1С в Windows Server 2016 становится повреждение системного кэша шрифтов. 1С активно использует шрифты для построения форм «Такси», и сбой в FontCache приводит к тому, что процесс 1cv8.exe бесконечно ждет ответа от системной службы отрисовки.
Выполним очистку кэша шрифтов по шагам:
services.msc).C:\Windows\ServiceProfiles\LocalService\AppData\Local\..dat, имя которых начинается с FontCache.FontCache в этом же каталоге.Также не забудем про стандартную процедуру — очистку пользовательского кэша 1С. Удаление папок из %AppData%\1C\1cv8\ часто помогает, если зависание связано с некорректным сохранением настроек динамических списков или форм пользователя.
Выясним еще одну неочевидную причину: при запуске 1С пытается проверить лицензионность, доступность обновлений или получить данные через интернет. Если в настройках системы указан прокси-сервер, который недоступен из изоляции RemoteApp, программа может «зависнуть» на 30–60 секунд, ожидая таймаута сетевого запроса.
Для исключения этой задержки добавим в дополнительные параметры запуска каждой информационной базы ключ:
/NoProxy
Это заставит 1С игнорировать системные настройки прокси и обращаться к ресурсам напрямую (или вообще не обращаться), что ускоряет появление рабочего стола и снижает вероятность зависания на «Начальной странице».
Подводя итог, можно сказать, что проблема зависания 1С в RemoteApp на Windows Server 2016 носит комплексный характер. Если вам нужно быстрое решение «здесь и сейчас» — откатите платформу до версии 8.3.16. Если же вы обязаны использовать современные релизы, то обязательным минимумом будет отключение аппаратного ускорения в conf.cfg и перевод RDP на протокол TCP. Эти действия в 90% случаев стабилизируют работу системы и избавляют пользователей от необходимости постоянно переподключать свои сессии.