![]() |
|
v7: Запуск "*.vbs" из 7.7... проблема | ☑ | ||
---|---|---|---|---|
0
serpentt
06.06.16
✎
13:30
|
Пробую запустить скрипт без Досовского окна через "WScript.Shell"
Скрипт получает информацию с сайта https://api.orgregister.1c.ru/orgregister/v2 запускаю из 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. https://ru.wikipedia.org/wiki/Переменная_среды |
|||
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) Спасибо. Сейчас испробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |