Имя: Пароль:
1C
1С v8
КомандаСистемы()
0 Zixxx
 
22.12.09
13:38
Есть ли какие-то варианты выполнить КомандаСистемы("net send...") параллельно с рабочим процессом пользователя и не на сервере?
1 shuhard
 
22.12.09
13:40
(0) параллельно - т.е. асинхронно, через scrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
не на сервере - это как
2 Zixxx
 
22.12.09
13:42
(1) Да просто сначало начал через регламентные задания делать, но потом вспомнил что на сервере этот метод недоступен.
Ну да наверное асинхронно, т.е. net send у меня может выполнятся больше 9 секунд, но пользователю нужно работать дальше. А более подробно можно пример?
3 shuhard
 
22.12.09
13:52
(0) пошукай по форуму вероятно по WScript.Shell
4 Zixxx
 
22.12.09
14:03
(3) Что делаю не так?

scrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
scrptCtrl.Language="vbscript";
scrptCtrl.AddCode("
|var x = new ActiveXObject (""WScript.Shell"");
|var messaga=""Test"";
|x.Run (""net snd auto2 ""+ messaga,1);");
ScrptCtrl.Run();

Ругается на компиляцию
5 lxs
 
22.12.09
14:05
net snd ?
6 Zixxx
 
22.12.09
14:12
(5) Нет не в этом деле

scrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
scrptCtrl.Language = "vbscript";
scrptCtrl.AddCode("
|Procedure Test()
|    var x = new ActiveXObject(""WScript.Shell"");
|    var messaga=""Test"";
|    x.Run (""net send auto2 ""+ messaga, 1);
|End Procedure
|");
ScrptCtrl.Run("Test");

Пишет: Предпологается наличие окончание инструкции
7 Zixxx
 
22.12.09
14:24
up
8 EasyRider
 
22.12.09
14:42
scrptCtrl.AddCode("
|Procedure Test()
|    var x = new ActiveXObject(""WScript.Shell"")
|    var messaga=""Test""
|    x.Run (""net send auto2 ""+ messaga, 1)
|End Procedure
|");

Так попробуй
9 Zixxx
 
22.12.09
14:43
(8) Ага добил уже. А можно ли как-то на момент выполнение скрипта прятать черное окно cmd ?
10 EasyRider
 
22.12.09
14:45
(9)Не думаю...
11 Zixxx
 
22.12.09
14:55
(10) Если запустить Run с параметром 0 тогда окошко не будет появляться...

ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language = "vbscript";
ScrptCtrl.AddCode("
|Function Test(UserName, Message)
|    Set WshShell = CreateObject(""WScript.Shell"")
|    WshShell.Run ""net send "" + UserName + "" "" + Message + """", 0
|End Function
|");
ScrptCtrl.Run("Test", "РомашовА", "123");
12 EasyRider
 
22.12.09
14:56
(11)Спасибо за совет!Будем знать :)
13 MaxS
 
22.12.09
14:57
(2) а у меня на сервере выполняется ;)
Процедура фКомандаСистемы(СтрокаКоманды,ФоновыйРежим=Ложь,sReturn=Неопределено) Экспорт
   
   //#Если Клиент Тогда
   //    глЗаписьВЖР("Команда системы: "+СтрокаКоманды,,"РегламентныеПроцедуры.КомандаСистемы");
   //    КомандаСистемы(СтрокаКоманды);
   //    //ЗапуститьПриложение(СтрокаКоманды,,Истина);
   //#Иначе
   глЗаписьВЖР("Запуск Wscript: "+СтрокаКоманды,,"РегламентныеПроцедуры.КомандаСистемы");
   WshShell=Новый COMОбъект("Wscript.Shell");
   Если ФоновыйРежим=Истина Тогда
       sReturn = WshShell.run(СтрокаКоманды,1,False);
   Иначе
       sReturn = WshShell.run(СтрокаКоманды,1,True);
   КонецЕсли;
   глЗаписьВЖР(sReturn,,"РегламентныеПроцедуры.КомандаСистемы");
   //#КонецЕсли        
   
КонецПроцедуры
14 Zixxx
 
22.12.09
15:03
(13) Ну скрипты и так будут выполняться на сервере а метод КомандаСистемы нет
15 MaxS
 
22.12.09
15:05
(14) Ну в (2) вы написали, что  >но потом вспомнил что на сервере этот метод недоступен.
В (13) показано, что метод выполняющий те же функции доступен на сервере.
16 Zixxx
 
22.12.09
15:08
(15) Может там чего напутано? Просто мне регламентное задание на сервере писало что процедура или функция не обнаружена "КомандаСистемы" да и самом синтаксисе написано что Доступность: Тонкий клиент, толстый клиент
17 shuhard
 
22.12.09
15:09
(16) ты ответы не читаешь ?
В (13) показано, что метод выполняющий те же функции доступен на сервере.
ключевое слово ТЕ ЖЕ функции
18 Zixxx
 
22.12.09
15:09
(15) У тебя КомандаСистемы(СтрокаКоманды); в коментах
19 Zixxx
 
22.12.09
15:11
(17) А ну тогда о другом подумал, ладно проехали, всем спасибо
20 MaxS
 
22.12.09
15:18
(18) можно раскомментировать, работать будет во всех вариантах - серверном и клиентском:

#Если Клиент Тогда
 КомандаСистемы(СтрокаКоманды);
Иначе
 WshShell=Новый COMОбъект("Wscript.Shell");
 WshShell.run(СтрокаКоманды,1,False);
#КонецЕсли
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн