Опубликовано: 23.01.2021

Запуск внешнего приложения из программного кода

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

Для запуска внешнего приложения из программного кода во встроенном языке системы «1С:Предприятие» предусмотрено две системных (встроенных) процедуры: ЗапуститьПриложение() и КомандаСистемы().

Процедура КомандаСистемы() (англоязычный синоним — System()) вызывает на исполнение команду, как если бы она была введена в командной строке. При выполнении команды загружается исполняемый файл как «верхняя», активная программа.

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

Синтаксис процедуры:

КомандаСистемы(<СтрокаКоманды>);

где <СтрокаКоманды> — строковое выражение, содержащее строку команды, как она записывается в командной строке. Если в параметре не содержится полный путь к загружаемой программе, то её поиск происходит в следующей последовательности:

  • текущий системный каталог;
  • каталог Windows;
  • системные каталоги Windows;
  • все каталоги, указанные в переменной Path.

Пример использования процедуры:

Если Форматировать = 1 Тогда
   // Если установлена опция "Форматировать диск перед выгрузкой файлов",
   // выполняем форматирование диска
   КомандаСистемы("format A:");
КонецЕсли;
. . .

Результат выполнения вышеприведённого кода показан на рисунке ниже.

Запуск команды форматирования диска

Процедура ЗапуститьПриложение() (англоязычный синоним — RunApp()) вызывает запуск внешнего приложения. В отличие от процедуры КомандаСистемы() запуск приложения выполняется непосредственно, минуя командный интерпретатор. Кроме того, процедура может открыть файл с помощью ассоциированного для данного вида файлов приложения (при условии, что таковое установлено на данном компьютере). При выполнении команды исполняемый файл загружается как «верхняя», активная программа.

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

Синтаксис процедуры:

ЗапуститьПриложение(<СтрокаКоманды>);

где <СтрокаКоманды> — строковое выражение, содержащее строку команды запуска внешнего приложения или имя файла, чтобы открыть его с помощью ассоциированного для данного вида файлов приложения. Если в параметре не содержится полный путь к загружаемой программе, то её поиск происходит в следующей последовательности:

  • текущий системный каталог;
  • каталог Windows;
  • системные каталоги Windows;
  • все каталоги, указанные в переменной Path.

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

Процедура ОткрытьФайлДляПросмотра()
   ЗапуститьПриложение(КаталогПользователя() + "output.xml");
КонецПроцедуры

В вышеприведённом примере XML-файл будет открыт для просмотра в браузере Internet Explorer, который по умолчанию ассоциирован с данным видом файлов (если конечно не установлено какое-либо иное специальное приложение).

Пример команды для открытия текстового файла с помощью редактора Notepad:

КомандаСистемы("notepad " + КаталогПользователя() + "output.txt");

Другие статьи по схожей тематике