2 378 документов
← К списку

ЗапуститьПрограмму

страница

Предусмотрено две одноименных функции: ФайловаяСистема.ЗапуститьПрограмму для вызова с сервера ФайловаяСистемаКлиент.ЗапуститьПрограмму для вызова с клиента

1. Для вызова с клиента

Запускает внешнюю программу на исполнение (например, *.exe, *bat), или системную команду (например, ping, tracert или traceroute, обращаться к rac-клиенту), Позволяет также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr) При запуске внешней программы в пакетном режиме поток вывода и поток ошибок может возвращаться на не ожидаемом языке. Для того чтобы передать внешней программе язык, на котором ожидается результат следует:

  • указать язык в параметре запуска этой программы (если такой параметр предусмотрен). Например, в пакетном режиме платформы 1С:Предприятие предусмотрен ключ "/L en";
  • в других случаях явно установить кодировку исполнения пакетной команды. См. свойство КодировкаИсполнения возвращаемого значения ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы.

Синтаксис

Процедура ЗапуститьПрограмму(Знач КомандаЗапуска, Знач ПараметрыЗапускаПрограммы = Неопределено) Экспорт

Параметры

  • КомандаЗапуска — Строка - командная строка для запуска программы.
    • Массив - первый элемент массива, путь к исполняемому приложению, если Массив, то первый элемент массива - путь к исполняемому приложению, остальные - передаваемые параметры, массив соответствует тому, который получит вызываемая программа в argv.
  • ПараметрыЗапускаПрограммы — см. ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы.

Пример вызова

// Простой запуск
 ФайловаяСистемаКлиент.ЗапуститьПрограмму("calc");
 // Запуск с ожиданием завершения и получения кода возврата:
 ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
 ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
 ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
 ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
 ПараметрыЗапускаПрограммы.Оповещение = Новый ОписаниеОповещения("ПриПолученииРезультатаЗапускаПрограммы", ЭтотОбъект);
 ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
 &НаКлиенте
 Процедура ПриПолученииРезультатаЗапускаПрограммы(Результат, ДополнительныеПараметры) Экспорт
     КодВозврата = Результат.КодВозврата;
     ПотокВывода = Результат.ПотокВывода;
     ПотокОшибок = Результат.ПотокОшибок;
 КонецПроцедуры

Доступность

Тонкий клиент, Толстый клиент

2. Для вызова с сервера

Запускает внешнюю программу на исполнение (например, *.exe, *bat), или системную команду (например, ping, tracert или traceroute, обращаться к rac-клиенту), Позволяет также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr) При запуске внешней программы в пакетном режиме поток вывода и поток ошибок может возвращаться на не ожидаемом языке. Для того чтобы передать внешней программе язык, на котором ожидается результат следует:

  • указать язык в параметре запуска этой программы (если такой параметр предусмотрен). Например, в пакетном режиме платформы 1С:Предприятие предусмотрен ключ "/L en";
  • в других случаях явно установить кодировку исполнения пакетной команды. См. свойство КодировкаИсполнения возвращаемого значения ФайловаяСистема.ПараметрыЗапускаПрограммы.

Синтаксис

Функция ЗапуститьПрограмму(Знач КомандаЗапуска, ПараметрыЗапускаПрограммы = Неопределено) Экспорт 

Параметры

  • КомандаЗапуска — Строка - командная строка для запуска программы.
    • Массив - первый элемент массива, путь к исполняемому приложению, остальные элементы массива - это передаваемые параметры, массив соответствует тому, который получит вызываемая программа в argv.
  • ПараметрыЗапускаПрограммы — см. ФайловаяСистема.ПараметрыЗапускаПрограммы

Возвращаемое значение

Структура:

  • КодВозврата - Число - код возврата программы;
  • ПотокВывода - Строка - результат работы программы, направленный в поток stdout;
  • ПотокОшибок - Строка - ошибки исполнения программы, направленные в поток stderr.

Пример вызова

// Простой запуск
ФайловаяСистема.ЗапуститьПрограмму("calc");
// Запуск с ожиданием завершения
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ФайловаяСистема.ЗапуститьПрограмму("C:\Program Files\1cv8\common\1cestart.exe", 
 ПараметрыЗапускаПрограммы);
// Запуск с ожиданием завершения и получением потока вывода
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
Результат = ФайловаяСистема("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода);
// Запуск с ожиданием завершения и получением потока вывода и с конкатенацией команды запуска
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
КомандаЗапуска = Новый Массив;
КомандаЗапуска.Добавить("ping");
КомандаЗапуска.Добавить("127.0.0.1");
КомандаЗапуска.Добавить("-n");
КомандаЗапуска.Добавить(5);
Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы);
ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода);

Доступность

Сервер, Толстый клиент, Внешнее соединение