Как запустить удаленное приложение 1С через RDP с параметрами командной строки?

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

Часто при работе с удаленными базами данных 1С мы сталкиваемся с задачей автоматизации рутинных процессов. Например, нам хочется сделать так, чтобы информационная база автоматически выгружалась в каталог по расписанию или по клику на один ярлык. Рассмотрим ситуацию, когда наша база находится в облаке (например, в Scloud), и доступ к ней осуществляется через опубликованное приложение RemoteApp по протоколу RDP.

Разберем по шагам, можно ли передать параметры для запуска конфигуратора на выгрузку, почему стандартные способы могут не сработать в закрытой облачной инфраструктуре, и проанализируем доступные альтернативные решения.

Попытка прямой передачи параметров через RDP-файл

Вручную мы всегда можем запустить стартер 1С, выбрать нужную информационную базу и режим запуска (Предприятие или Конфигуратор). Однако для автоматики нам нужно передать аргументы прямо в ярлык. Давайте посмотрим на классический подход, когда мы редактируем сам конфигурационный файл подключения RDP в текстовом редакторе.

Мы пробуем добавить в файл строку инициализации приложения с нужными нам ключами для запуска пакетного режима конфигуратора:


remoteapplicationcmdline:s: DESIGNER /F"D:\DB\MyBase" /N"Backup" /P"*****" /DumpIB "D:\Backup\base.dt"

Или вариант для запуска режима Предприятия:

remoteapplicationcmdline:s: ENTERPRISE /F"D:\DB\MyBase" /N"Backup" /P"*****"

Но при попытке запуска мы видим, что эти параметры полностью игнорируются, и открывается стандартное окно выбора баз. Выясним причину такого поведения. Дело в том, что при публикации приложения (RemoteApp) на терминальном сервере администратор жестко задает настройки безопасности. В свойствах опубликованного приложения на стороне сервера есть настройка, отвечающая за параметры командной строки. По умолчанию в коммерческих облаках установлено значение «Не разрешать параметры командной строки». Если сервер не настроен на принятие любых аргументов, всё, что мы прописываем в параметре remoteapplicationcmdline, отбрасывается.

Использование alternate shell и shell working directory

Проанализируем другие доступные параметры протокола RDP. Существуют переменные, которые позволяют переопределить оболочку при входе в сеанс:

  1. alternate shell:s — автоматический запуск программы при подключении.
  2. shell working directory:s — местоположение рабочей папки приложения.

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

Официальные ограничения облачных провайдеров

Посмотрим на официальные ответы технической поддержки коммерческих облаков (на примере Scloud). При попытке настроить автоматическую выгрузку через ярлык, администраторы облака дают однозначный ответ:

«Использование пакетного режима в облаке запрещено политиками безопасности. К сожалению, запуск ярлыка с дополнительными параметрами невозможен.»

Это связано с тем, что разрешение произвольных аргументов командной строки при запуске RemoteApp открывает потенциальные уязвимости в изолированной многопользовательской среде терминального сервера. Пользователь мог бы передать деструктивные команды или попытаться запустить стороннее ПО.

Альтернативные пути выгрузки базы из закрытого облака

Поскольку автоматизировать выгрузку через ярлык RDP с параметрами невозможно из-за политик безопасности, рассмотрим другие предусмотренные платформой методы сохранения копий нашей базы.

  1. Использование личного кабинета облачного сервиса. Большинство современных облачных провайдеров 1С имеют панель управления клиентом. Там предусмотрен функционал для создания резервных копий баз данных и их скачивания (в виде файлов *.dt или zip-архивов). Там же можно настроить автоматическое расписание бэкапов самой платформой облака, что гораздо надежнее, чем использовать локальные скрипты.
  2. Штатные средства 1С (ручной режим или регламентные задания). Выгрузку можно инициировать непосредственно из запущенного приложения в режиме Предприятия. Мы можем зайти в раздел «Администрирование», выбрать встроенные обработки для создания резервных копий или переноса данных.
  3. Подключение через расширения и внешние обработки. Если у нас есть доступ к конфигуратору или возможность добавления внешних обработок, мы можем написать обработку, которая будет сохранять данные базы по расписанию через РегламентныеЗадания и отправлять их, например, на FTP-сервер или по электронной почте.

Как настроить пакетный запуск на собственном сервере

Если мы администрируем собственный терминальный сервер и не ограничены политиками стороннего провайдера, разберем по шагам, как заставить этот механизм работать правильно.

Чтобы автоматическая выгрузка базы происходила без появления диалоговых окон при подключении через RemoteApp, нам потребуется выполнить следующие действия на сервере и клиенте:

  1. Зайдем в Диспетчер серверов на сервере терминалов и откроем свойства опубликованного RemoteApp (нашего стартера 1С).
  2. Перейдем в настройки параметров командной строки и переключим флаг на «Разрешить любые параметры командной строки».
  3. Сохраним настройки публикации.
  4. Теперь перейдем на сторону клиента. Откроем наш RDP-файл в Блокноте и добавим нужные параметры. Обратите внимание, что мы передаем алиас опубликованного приложения в переменной remoteapplicationprogram:s:.

Пример корректно настроенных строк в файле RDP для пакетной выгрузки:


remoteapplicationprogram:s:||1C_Enterprise
remoteapplicationcmdline:s: DESIGNER /S "MyServer\MyBase" /N "Admin" /P "MySecretPass" /DumpIB "C:\Backups\Base_Dump.dt"
username:s:MyDomain\MyUser

Здесь мы используем параметр username:s:, чтобы RDP-клиент знал учетную запись Windows для прозрачной авторизации, а строка remoteapplicationcmdline:s: передает ключи платформе 1С для запуска конфигуратора (DESIGNER) и выгрузки базы (/DumpIB). На собственном сервере эта связка отработает безупречно, запустив фоновый процесс выгрузки данных и закрыв сессию после её завершения.

← На главную