|
v7: Запуск "*.vbs" из 7.7... проблема
| ☑ |
0
serpentt
06.06.16
✎
13:30
|
Пробую запустить скрипт без Досовского окна через "WScript.Shell"
Скрипт получает информацию с сайта
запускаю из 1С
WshShell = СоздатьОбъект("WScript.Shell");
Запуск = "%comspec% /c "+ВремФайлНаДиске+".vbs";
WshShell.Exec(Запуск);
приходит ответ "не могу расшифровать данные"
Запускаю из "проводника", данный скрипт.... приходят нужные данные.
компьютер WinXP-3sp
|
|
1
Звездец
06.06.16
✎
13:31
|
%comspec% что в этой переменной? насколько я помню это не стандартная системная переменная окружения
|
|
2
serpentt
06.06.16
✎
13:33
|
(1) comspec система сама определяет какое запускать приложение
|
|
3
Звездец
06.06.16
✎
13:35
|
(2) не совсем понял.
в общем посмотри отладчиком Запуск правильно ли ссылается на файл, который нужно запустить и есть ли права записи туда, куда этот скрипт пишет временные данные
|
|
4
serpentt
06.06.16
✎
13:39
|
(3)
Хранит путь до текущего командного интерпретатора Windows.
|
|
5
serpentt
06.06.16
✎
13:41
|
(3) Все права в норме...
Если из 1с запустить...
Запуск = "c:\WINDOWS\System32\explorer.exe "+ВремФайлНаДиске+".vbs";
WshShell.Exec(Запуск);
Ответ приходит, но всплывают дополнительные окна по безопасности скрипта.
|
|
6
ADirks
06.06.16
✎
13:47
|
Скрипты лучше выполнять непосредственно движком, без всяких файлов.
Например
Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.Language = "JScript";
Стр = "
|function GetNum(str)
|{
| var re = new RegExp('(.*)(Cумма [\\d-\\.,]*.*)', 'i'); //Откинем хвост с суммами
| var arr = re.exec(str);
| if( arr != null ) str = arr[1];
|
| re = new RegExp('(.*)(НДС[\\s(]*[\\d]*.*)', 'i'); //Откинем хвост с суммами
| arr = re.exec(str);
| if( arr != null ) str = arr[1];
|
| re = new RegExp('\\d\\d\\.\\d\\d\\.\\d{2,4}', 'ig'); //вычистим даты
| str = str.replace(re, '');
| re = new RegExp('\\d{2,4}\\s*[гГ]', 'ig'); //вычистим даты
| str = str.replace(re, '');
|
| re = new RegExp('\\d{3,}', 'ig'); //вот теперь все циферки будем считать потенциальными номерами счетов
| arr = str.match(re);
| if( arr == null ) return '';
|
| return '' + arr;
|}
|";
Скрипт.AddCode(стр);
стрНомера = Скрипт.Run("GetNum", стрНазначениеПлатежа);
|
|
7
serpentt
06.06.16
✎
13:49
|
(6) Спасибо. Сейчас испробую
|
|