Вопрос

Вызов сторонних приложений из системы.

Добрый день. Подскажите, пожалуйста, способ вызова сторонних приложений из Terrasoft CRM X25 - 3.1.0.16? Вызов из вкладки Контрагенты с передачей параметра (id выделенного контрагента).

Спасибо!

У меня такой же вопрос

12 комментариев

Попробуйте

var wsh = new ActiveXObject("WScript.Shell");
wsh.Run("notepad.exe c:\\1.txt");

Здравствуйте, Сергей!

Некоторые примеры функций запуска внешнего приложения из скрипта Terrasoft CRM:

1.

function Main() {
            var CMDFile = 'C:\\WINDOWS\\notepad.exe';
            var Shell = new ActiveXObject("WScript.Shell");
            Shell.Run(CMDFile, 1, false);
}

2.

function StartOpenPhoneApplication(){
            var WorkingDir = Connector.WorkingDirectory;
            var OpenPhoneFile = WorkingDir + OpenPhone.Dir + '\\' +OpenPhone.FileExeName;
            if (IsEmptyValue(GetProcessIDByName(OpenPhone.FileExeName))){
                        var Shell = new ActiveXObject("WScript.Shell");
                        Shell.Run(OpenPhoneFile, 0, false);
            }           
}

Приятной работы!

Terrasoft Support Team

Спасибо!

В продолжение:
как остановить выполнение скрипта, вызвавшего внешнюю программу, до окончания работы этой самой программы. Как вариант - нам надо из скрипта вызвать рар с коммандами на распаковку архива, распаковать архив и только после полной распаковки продолжить выполнение скрипта.

http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx

А вообще третий параметр в метода Run в ответе саппорта сходу наталкивает на кое-какие соображения :)

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

Собственно ответом была только ссылка. Дальше был просто комментарий. Узнав Вашу должность в профиле, я подумал что это будет самым адекватным вариантом ответа. Жаль, ошибся.

Если третим параметром передать true, то скрипт дождется выполнения задачи. Если не слетит по таймауту. Таймаут можно изменить в инспекторе свойств скрипта.

Я по ссылке, данной Вами, разобрался с параметром, за что огромное спасибо. Проблема то состояла в том, чтобы найти мануал по функции. Где только не рыл. А вот на мелкософт заглянуть даже не подумал :-) Там же заодно просветился и по поводу второго параметра. Ссылочку запомнил, теперь будет настольная книга.

Рад что пригодилось.
Меняйте поисковик - гугл по запросу
WScript.Shell Run
выдает эту страницу первой в списке ссылок :)

А у меня тут же вопрос, а как потом получить результаты обратно в Terrasoft?

Shell.Run возвращает только код ошибки (в случае, если скрипт дожидается завершения вызванного приложения). Передачу данных нужно реализовывать из вызываемого приложения самостоятельно. Универсального способа нет. Посудите сами, каким универсальным способом будут возвращать результаты блокнот, редактор изображений и просмотрщик видео?

А жаль :)
Значит будем передавать через файлы.

Войдите или зарегистрируйтесь, чтобы комментировать