Имя: Пароль:
1C
1C 7.7
v7: Установка переменной окружения из WSH
0 big
 
19.12.19
08:16
Для работы с бэкапами понадобилось в процессе работы из-под прокси устанавливать параметры этой самой прокси.

В JScript сделал это вот так:
WshShell = WScript.CreateObject('WScript.Shell')
WshEnvir = WshShell.Environment("PROCESS");
WshEnvir('HTTP_PROXY') = 'http://user:pass@proxy:3128'
WshEnvir('HTTPS_PROXY') = 'http://user:pass@proxy:3128'

и далее уже

WshShell.Run("%ComSpec% /c "+Command,1,true)




А вот как это сделать из 7.7 не могу понять. Вот такой код не работает:

WshShell=СоздатьОбъект("WScript.Shell");
WshEnvir = WshShell.Environment("PROCESS");
//WshEnvir("HTTP_PROXY")    = "http://user:pass@proxy:3128";;
//WshEnvir("HTTPS_PROXY")    = "http://user:pass@proxy:3128";

WshEnvir.HTTP_PROXY    = "http://user:pass@proxy:3128";;
WshEnvir.HTTPS_PROXY    = "http://user:pass@proxy:3128";;


Посоветуйте как можно сделать?
1 vicof
 
19.12.19
08:18
что значит не работает?
2 Смотрящий
 
19.12.19
08:19
1
3 big
 
19.12.19
08:24
При таком варианте:

WshEnvir.HTTP_PROXY    = "http://user:pass@proxy:3128";;
WshEnvir.HTTPS_PROXY    = "http://user:pass@proxy:3128";;

"Поле агрегатного объекта не обнаружено"



При таком варианте:
WshEnvir("HTTP_PROXY")    = "http://user:pass@proxy:3128";;
WshEnvir("HTTPS_PROXY")    = "http://user:pass@proxy:3128";;

"Процедура не обнаружена"
4 vicof
 
19.12.19
08:30
А в отладчике посмотреть, что WshEnvir из себя представляет?
5 vicof
 
19.12.19
08:34
Подозреваю, что массив
6 vicof
 
19.12.19
08:35
Пример:

Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment
MsgBox WshEnv.Item("WINDIR")
Другой пример:

Set WshShell = CreateObject("WScript.Shell")
WScript.Echo "ПЕРЕМЕННЫЕ System:"
For Each Var In WshShell.Environment("System")
    WScript.Echo Var
Next
WScript.Echo vbCrLf & "ПЕРЕМЕННЫЕ User:"
For Each Var In WshShell.Environment("User")
    WScript.Echo Var
Next
WScript.Echo vbCrLf & "ПЕРЕМЕННЫЕ Volatile:"
For Each Var In WshShell.Environment("Volatile")
    WScript.Echo Var
Next
WScript.Echo vbCrLf & "ПЕРЕМЕННЫЕ Process:"
For Each Var In WshShell.Environment("Process")
    WScript.Echo Var
Next
7 trdm
 
19.12.19
08:40
Используй
ScrCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");     
ScrCtrl.Language="JScript";
8 ADirks
 
19.12.19
08:47
(0) с коллекциями 1С не умеет.
как-то так надо

    Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.Language = "JScript";
    стрКод = "
    |function SetEnv()
    |{
    |    WshShell = WScript.CreateObject('WScript.Shell');
    |    WshEnvir = WshShell.Environment("PROCESS");
    |    WshEnvir('HTTP_PROXY') = 'http://user:pass@proxy:3128';
    |    WshEnvir('HTTPS_PROXY') = 'http://user:pass@proxy:3128';
    |}
    |";
    Скрипт.AddCode(стрКод);

    Скрипт.Run("SetEnv");
9 big
 
19.12.19
08:49
(6) Эти примеры у меня есть ))
Только что его же посмотрел и обнаружил, что этот объект-коллекция только для чтения. Как с ним получается работать в JScript - вопрос )

(7) Кстати, пробовал и так, но видать опыта не хватает - не получилось на самом начальном этапе.
    ТекстСкрипта    = "
    |function probe(){
    |
    |    var WshShell = WScript.CreateObject(""WScript.Shell"");
    |    return 1234;
    |}";

    scriptCtrl =  СоздатьОбъект("MSScriptControl.ScriptControl");
    scriptCtrl.Language="jscript";
    scriptCtrl.AddCode(ТекстСкрипта);
    Сумма = scriptCtrl.Eval("probe()");


Ошибка: Ошибка выполнения Microsoft JScript: 'WScript' - определение отсутствует
10 Сияющий в темноте
 
19.12.19
08:49
если запуск через командную строку,то лучше всего подходит bat файл,где все в одной коробке.
также,можно посмотреть на создание процесса через wmi,где переменные окружения задаются явно.
и еще
когда вы используете vbscript,то у обьекта вызывается метод по умолчанию,который 1с вызвать не может,в ней нужно все методы прописывать явно.
11 ADirks
 
19.12.19
08:56
(9)  WshShell = new ActiveXObject('WScript.Shell');
12 big
 
19.12.19
08:58
(11) УРА!! Это оно и есть!!! )))
13 big
 
19.12.19
08:59
(11) Спасибо!! ))