|  | 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) Спасибо. Сейчас испробую     |  | 
        Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой