При организации работы на складе с использованием терминалов сбора данных (ТСД) часто возникает задача максимально упростить интерфейс для конечного пользователя. Оптимальный сценарий выглядит так: сотрудник включает ТСД, подключается к удаленному рабочему столу (RDP), и у него сразу открывается 1С. После завершения работы и выхода из 1С терминальная сессия должна закрываться автоматически, не оставляя пользователя перед пустым рабочим столом или черным экраном.
В этой статье мы подробно разберем, почему сессии могут зависать, как правильно настроить сценарии запуска и какие параметры операционной системы помогут сделать работу ТСД стабильной.
Начнем с самого простого и штатного способа, который предоставляет Windows Server. Вместо того чтобы запускать полноценный рабочий стол (Explorer.exe), мы можем указать конкретную программу, которая будет служить оболочкой сеанса.
Рассмотрим по шагам, как это сделать:
Важный нюанс: при использовании этого метода сеанс завершится автоматически сразу после закрытия указанного приложения. Однако, если 1С запускает дочерние процессы, сессия может "повиснуть". Выясним причину этого поведения далее.
Если нам нужно передать специфические параметры запуска (имя базы, пользователя, пароль), стандартного поля в профиле может быть недостаточно. В этом случае мы создаем .bat или .cmd файл. Проанализируем типичную ошибку при его написании.
Часто используют запуск через 1cestart.exe. Проблема в том, что "стартер" лишь выбирает нужную версию платформы, запускает основной процесс 1cv8.exe и тут же завершает свою работу. С точки зрения Windows, основная программа закрылась, и скрипт идет дальше, выполняя команду logoff, хотя 1С еще только загружается.
Чтобы этого избежать, мы должны обращаться напрямую к исполняемому файлу конкретной версии платформы. Посмотрим на пример правильного скрипта:
@echo off
"C:\Program Files (x86)\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /S "MSK-1-P\ERP" /N "Склад_Пользователь" /P "123" /DisableStartupMessages
logoff
Использование команды logoff в конце гарантирует, что сессия будет закрыта принудительно после того, как основной процесс 1cv8.exe завершит работу.
Иногда после выхода из 1С пользователь видит черный экран в течение нескольких минут. Это происходит потому, что операционная система ожидает завершения фоновых процессов, которые были запущены во время сеанса (например, ctfmon.exe — языковая панель, rdpclip.exe — буфер обмена или splwow64.exe — служба печати).
Рассмотрим способы решения этой проблемы через реестр. Мы можем указать системе, какие процессы нужно игнорировать при завершении сеанса. Разберем алгоритм:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Sysprocsrdpclip.exe, и установим значение 0.Также рекомендуется настроить таймаут для службы печати, которая часто "держит" сессию. Для этого в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print создадим параметр SplWOW64TimeOut со значением 1 (секунда).
Технология RemoteApp позволяет запускать приложение так, будто оно открыто локально на устройстве пользователя, скрывая элементы управления удаленным рабочим столом. Это наиболее современный подход для ТСД на базе Windows или Android (через RDP-клиент).
Проанализируем преимущества и настройки RemoteApp:
Малоизвестный, но крайне полезный параметр запуска 1С — ключ /it. Разберем, как он помогает в нашей задаче. При добавлении этого ключа в строку запуска, 1С переходит в режим промышленного терминала (Industrial Terminal). Это оптимизирует работу с модальными окнами и интерфейсом в условиях RDP-соединения.
Пример полной строки запуска для ярлыка или бат-файла:
"C:\Program Files\1cv8\common\1cestart.exe" enterprise /S "Server\Base" /it /ClearCache
Параметр /ClearCache полезен именно для ТСД, так как из-за частых обрывов Wi-Fi соединения локальный кэш конфигурации может повреждаться, вызывая ошибки при запуске.
Для стабильной работы связки "ТСД + 1С" мы рекомендуем проверить следующие настройки в редакторе групповых политик (gpedit.msc):
Выясним, какой метод лучше. Если ваша инфраструктура позволяет, используйте RemoteApp с настроенными лимитами сессий. Если же требуется максимально жесткий контроль — выбирайте запуск через Batch-файл с явным указанием logoff и предварительной очисткой процессов через taskkill, если это необходимо.