Как организовать запуск нескольких баз 1С в терминальной сессии без рабочего стола?

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

В практике системного администрирования 1С часто возникает задача ограничить рабочее пространство пользователя терминального сервера. Для повышения безопасности и удобства администраторы отключают стандартный рабочий стол Windows и панель задач, оставляя пользователю только возможность работы с программой. Однако здесь возникает техническая сложность: стандартный загрузчик 1CEStart.exe после выбора информационной базы запускает основной процесс платформы и завершается. В режиме удаленного приложения (RemoteApp) это часто приводит к тому, что операционная система считает сеанс завершенным и закрывает соединение, не давая пользователю запустить вторую или третью базу. Рассмотрим подробно, как решить эту проблему различными методами.

Метод 1. Настройка удаленных приложений RemoteApp

Наиболее современным и правильным подходом является использование технологии RemoteApp. Вместо того чтобы предоставлять пользователю весь рабочий стол, мы публикуем 1С как отдельное окно, которое для пользователя выглядит так, будто оно запущено локально. Разберем, как это работает в контексте нашей проблемы:

  1. Публикация стартера: Если опубликовать 1CEStart.exe, пользователь увидит привычный список баз. При запуске второй базы через этот же ярлык, Windows Server автоматически перенаправит запрос в уже существующую терминальную сессию пользователя, открывая второе окно 1С.
  2. Удержание сессии: Чтобы сессия не «схлопывалась» при закрытии окна выбора баз, в настройках сервера терминалов (RD Session Host) необходимо настроить таймауты завершения сеанса. Проанализируем параметры реестра, которые могут помочь: в ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RemoteApp параметр LogoffDelay определяет задержку перед закрытием сессии после завершения последнего приложения.

Метод 2. Прямой запуск баз через ярлыки и параметры командной строки

Если нам нужно, чтобы пользователь мог запускать конкретные базы в обход общего списка, мы можем создать отдельные ярлыки для каждой базы. Для этого используются параметры командной строки 1С. Выясним основные ключи, которые нам понадобятся:

Посмотрим на пример команды для запуска конкретной базы:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "Server1C\Accounting" /N "Manager" /P "Password123"

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

Метод 3. Создание скриптовой «оболочки» (Launcher)

Когда стандартных средств недостаточно, мы можем создать собственный скрипт, который будет выступать в роли меню для пользователя. Этот скрипт запускается вместо оболочки Windows (Explorer.exe) или как основное приложение RemoteApp. Рассмотрим преимущества такого подхода:

  1. Постоянство сессии: Скрипт (например, на языке VBScript или скомпилированный EXE на Delphi/C#) висит в процессах до тех пор, пока пользователь сам не нажмет кнопку «Выход». Это гарантирует, что сессия не закроется, даже если все окна 1С будут закрыты.
  2. Централизованное управление: Мы можем динамически формировать список доступных баз для конкретного пользователя, проверяя его права доступа.

Разберем пример простейшего скрипта на VBScript, который может служить оболочкой:


Set WshShell = CreateObject("WScript.Shell")
' Запускаем 1С и ждем выбора базы, но сам скрипт не закрываем
Do
    Return = WshShell.Run("""C:\Program Files\1cv8\common\1cestart.exe""", 1, True)
    ' Если нужно запретить пользователю закрывать скрипт до конца смены:
    Msg = MsgBox("Завершить работу с 1С и выйти из системы?", 36, "Завершение сеанса")
    If Msg = 6 Then Exit Do
Loop

Метод 4. Управление списком баз через 1CEStart.cfg

Для системного администратора важно не настраивать список баз каждому пользователю вручную. Мы можем использовать файл 1CEStart.cfg для подключения общих списков баз (файлы .v8i). Проанализируем структуру этого процесса:

  1. В папке %AppData%\1C\1CEstart пользователя или в общей папке с программой находим 1CEStart.cfg.
  2. Добавляем строку CommonCfgLocation=\\Server\Share\common_bases.v8i.
  3. В самом файле .v8i прописываем настройки баз.

При таком подходе, запустив опубликованный 1CEStart.exe, пользователь всегда будет видеть актуальный список баз, а при выборе любой из них сессия останется активной благодаря механизмам RemoteApp.

Особенности работы без панели задач (Taskbar)

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

Резюме

Для реализации возможности старта нескольких баз в «бесшосном» режиме наиболее эффективным является сочетание RemoteApp и настройки CommonCfgLocation. Это позволяет сохранить привычный интерфейс выбора баз 1С, обеспечивая при этом стабильность терминальной сессии. Если же требуется максимально жесткий контроль, рекомендуется использование скриптовой оболочки, которая будет явно управлять жизненным циклом сеанса пользователя.

← На главную