Как решить проблему зависания сессий и лицензий 1С на терминальном сервере?

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

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

Анализируем поведение терминального сервера и групповых политик

Прежде всего, разберем базовый механизм работы RDS. Часто пользователи вместо корректного завершения работы (Выход/Log off) просто нажимают на «крестик», закрывая окно терминального клиента. В этом случае сессия переходит в состояние Disconnected (Отключена), но все процессы, включая 1cv8.exe, продолжают выполняться на сервере. Если настройки сервера позволяют таким сессиям висеть бесконечно, лицензия 1С будет считаться занятой.

Проанализируем необходимые настройки в Редакторе локальной групповой политики (gpedit.msc). Нам нужно ограничить время жизни отключенных сеансов. Перейдем по пути: Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Ограничения сеансов по времени.

Установим следующие параметры:

Борьба с зависанием процесса SplWOW64.exe

Выясним одну из самых неочевидных причин, почему сессия не закрывается до конца. Если пользователь что-то печатал из 1С, в его сеансе запускается процесс SplWOW64.exe (Print Driver Host for Applications). Этот системный процесс часто продолжает висеть в памяти в течение 15–20 минут после закрытия основного приложения, удерживая терминальную сессию открытой. Пока жива сессия, 1С считает, что лицензия используется.

Для решения этой проблемы мы можем принудительно завершать этот процесс или уменьшить время его ожидания. Рассмотрим правку реестра. Перейдем в ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Sysprocs

Добавим туда параметр DWORD с именем SplWOW64.exe и значением 0. Это укажет системе, что данный процесс не должен препятствовать закрытию сессии.

Настройка кластера серверов 1С:Предприятие

Если ваша база работает в клиент-серверном варианте, перезагрузка терминального сервера может не помочь, так как сессиями управляет Менеджер кластера 1С. Рассмотрим, какие настройки в консоли администрирования (mmc) влияют на удержание лицензий.

Откроем свойства нашей информационной базы в консоли администрирования кластера и обратим внимание на следующие параметры:

Эти параметры позволяют серверу 1С самостоятельно освобождать лицензии, даже если терминальный сервер по какой-то причине держит процесс в памяти.

Очистка сеансовых данных и кэша

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

  1. Остановим службу Агент сервера 1С:Предприятия.
  2. Перейдем в каталог расположения данных сервера. Обычно это: C:\Program Files\1cv8\srvinfo\reg_1541\.
  3. Найдем внутри папку с именем snccntx с расширением (например, snccntx.00000000-0000-0000-0000-000000000000).
  4. Важно: Удалим файлы с расширением *.dat внутри этого каталога. Именно в них хранится информация о текущих сеансах.
  5. Запустим службу 1С снова.

Посмотрим на пример расположения этих файлов в типовой системе:


%ProgramFiles%\1cv8\srvinfo\reg_1541\snccntx\snccntx.dat
%ProgramFiles%\1cv8\srvinfo\reg_1541\snccntx\snccntx.00000001.dat

Особенности использования RemoteApp

Если вы используете 1С через RemoteApp, проблема может быть связана с тем, что программа «зависает» на невидимом модальном окне (например, вопрос о подтверждении выхода или предупреждение безопасности). Пользователь закрывает окно RemoteApp, но процесс 1cv8.exe продолжает ждать ответа на вопрос, который больше некому увидеть.

Для корректного завершения таких процессов в среде RemoteApp рекомендуется настроить параметр LogoffDelay в реестре сервера:

Путь: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\RemoteApp

Создадим параметр WaitBeforeDisconnect (DWORD) и установим значение 0.

Влияние антивирусного ПО на завершение работы 1С

Проанализируем ситуацию, когда антивирус блокирует файлы 1С в момент выхода. В процессе закрытия 1С активно удаляет временные файлы и очищает кэш (папки в %AppData%\1C\1cv8\). Если антивирус в этот момент решает проверить эти файлы на вирусы, он блокирует доступ к ним. В итоге процесс 1С переходит в состояние «зомби» — он не виден в обычном списке приложений, но висит в дескрипторах ОС и удерживает лицензию.

Рекомендация: Добавьте в исключения антивируса (как на сервере, так и на клиенте):

Использование утилит для сброса файловых блокировок

Если база файловая, то основной причиной невозможности войти является файл блокировки 1Cv8.1clck. Выясним, как его разблокировать без перезагрузки сервера. Мы можем использовать оснастку «Общие папки» (fsmgmt.msc).

Зайдем в раздел «Открытые файлы», найдем файл 1Cv8.1clck в папке с базой данных и выберем пункт «Закрыть файл». Это мгновенно освободит базу для новых подключений, не затрагивая других пользователей.

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

← На главную