При использовании технологии RemoteApp для доставки приложений 1С пользователям часто возникает задача максимально упростить процесс входа. Одной из типичных проблем является появление стандартного окна выбора информационных баз, даже если пользователь работает только с одной конкретной конфигурацией. В этой статье мы подробно разберем, как модифицировать настройки подключения, чтобы при запуске ярлыка RemoteApp сразу открывалась нужная база данных, минуя все промежуточные диалоги.
Для начала проанализируем, как работает запуск 1С в терминальной сессии — для этого есть инструмент принудительного завершения сеансов пользователей 1С. Когда мы публикуем приложение на сервере (RD Session Host), мы указываем исполняемый файл. Обычно это 1cestart.exe — универсальный загрузчик, который анализирует установленные версии платформы и список доступных баз. Если запустить его без дополнительных параметров, он всегда будет показывать окно со списком. Чтобы этого избежать, нам необходимо передать в командную строку специальные ключи запуска 1С.
Рассмотрим структуру стандартного RDP-файла, который используется для подключения к RemoteApp. Чтобы эффективно управлять удалёнными подключениями (удобнее через централизованное администрирование рабочих мест и баз 1С), нас интересуют три ключевых параметра:
remoteapplicationprogram:s:||1cestart — идентификатор опубликованного приложения, который может хранить менеджер контактов RDP.remoteapplicationname:s:1C Предприятие — отображаемое имя.remoteapplicationcmdline:s: — это самое важное поле, в которое передаются аргументы командной строки.Самый распространенный способ заставить 1С открыть конкретную базу — указать путь к ней непосредственно в строке запуска. Разберем два варианта в зависимости от типа вашей базы.
Для клиент-серверного варианта используется ключ /S. Синтаксис выглядит следующим образом: "ИмяСервера\ИмяБазы". Рассмотрим пример заполнения строки в RDP-файле:
remoteapplicationcmdline:s:ENTERPRISE /S"SRV-1C-01\Accounting_Base"
Для файлового варианта используется ключ /F. Здесь нужно указать полный путь к папке с базой на диске сервера:
remoteapplicationcmdline:s:ENTERPRISE /F"C:\1C_Bases\Trade_Base"
В этих примерах параметр ENTERPRISE указывает, что базу нужно запустить в режиме "1С:Предприятие". Если вам требуется запуск в режиме конфигуратора, замените его на DESIGNER.
Иногда использование прямых путей через /S или /F может приводить к ошибкам, если в путях есть специфические символы или пробелы, которые некорректно обрабатываются шлюзом удаленных рабочих столов — для контроля таких ситуаций есть мониторинг ошибок и управление активными сеансами пользователей. В таких случаях полезно обратиться к администрированию систем, а мы проанализируем альтернативный и зачастую более надежный ключ — /IBName.
Этот параметр приказывает загрузчику найти в списке баз (который хранится в файле ibases.v8i профиля пользователя на сервере) базу с конкретным именем и запустить ее. Выясним условия для работы этого метода:
Пример настройки в RDP-файле:
remoteapplicationcmdline:s:ENTERPRISE /IBName "Бухгалтерия предприятия"
Часто возникают ситуации, когда 1cestart.exe "проглатывает" параметры командной строки или тратит лишнее время на поиск актуальной версии. Рассмотрим ситуацию, когда мы хотим запустить базу напрямую через исполняемый файл конкретной версии платформы. Выясним, как это сделать:
Вместо публикации 1cestart.exe, опубликуйте на сервере файл 1cv8.exe, который находится по пути вида C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe. В этом случае параметры в remoteapplicationcmdline будут передаваться напрямую в обход загрузчика, что работает быстрее и надежнее.
Если вы прописали все параметры в RDP-файле, но при запуске все равно открывается пустой список баз, необходимо проверить настройки сервера. Проанализируем важный параметр безопасности Windows Server — поможет инструмент для администрирования сессий и управления процессами:
По умолчанию в целях безопасности сервер RemoteApp может игнорировать любые аргументы командной строки, передаваемые клиентом. Чтобы это исправить, выполните следующие шаги:
Если выбрана опция "Параметры командной строки не допускаются", никакие изменения в RDP-файле не помогут — сервер будет просто отсекать их при попытке подключения.
Особое внимание уделим синтаксису. В RDP-файле строка параметров обрабатывается специфическим образом. Если в названии базы или пути к ней есть пробелы, их обязательно нужно заключать в кавычки. Однако сами кавычки внутри RDP-файла иногда требуют аккуратности.
Рассмотрим пример правильной экранизации:
Если вы редактируете RDP-файл блокнотом, строка должна выглядеть так:
remoteapplicationcmdline:s:ENTERPRISE /S "1c-server\my base"
Обратите внимание, что пробел после /S ставить не обязательно, но кавычки вокруг пути крайне важны для корректной интерпретации командной строки Windows.
Чтобы сделать вход в 1С по-настоящему "бесшовным", разберем, как избавиться еще и от окна ввода логина/пароля самой 1С. Лучшим способом является использование Windows-аутентификации. Для этого в настройках пользователя в 1С должен быть указан его доменный аккаунт, а в строку запуска добавлен ключ /WA+.
Итоговая идеальная строка запуска в RDP-файле может выглядеть так:
remoteapplicationcmdline:s:ENTERPRISE /S"SRV-1C\Base" /WA+ /AppAutoCheckVersion-
Здесь мы также добавили ключ /AppAutoCheckVersion-, который отключает проверку версии платформы, что может быть полезно для ускорения запуска в жестко настроенной терминальной среде.
Если параметров слишком много, рассмотрим продвинутый метод — использование файла описания информационных баз .v8i. Вы можете создать текстовый файл с расширением .v8i следующего содержания:
[BaseName]
Connect=Srvr="SRV-1C";Ref="Base";
ID=...
OrderInList=1
External=0
ClientConnectionSpeed=Normal
App=Auto
DefaultApp=Enterprise
Затем в настройках RemoteApp в качестве исполняемого файла укажите 1cv8.exe, а в командной строке передайте путь к этому файлу. Это гарантирует, что 1С подхватит все настройки, включая версию платформы, разрядность клиента и прочие тонкие параметры, которые сложно передать одной строкой.