Имя: Пароль:
1C
 
WSH - StdOut
0 Туц
 
15.12.06
04:46
Помогите решить задачку.
Запускаю 1с из VBS скрипта.
   Set WshExec = WshShell_.Exec (CmdString)

1С-ка выполняет определённые действия результат которых я хочу обработать в скрипте через

   OutStream = WshExec.StdOut;
   Пока OutStream.AtEndOfStream = 0 Цикл
       LogTextStream.WriteLine(OemToAnsi(OutStream.ReadLine()));
   КонецЦикла;

Так вот вопрос в том что нужно сделать в 1с дабы OutStream.ReadLine() возвращала хоть что-нибудь?
1 Туц
 
15.12.06
04:47
(0) Чё пишу... код приведён из 1С, но имел ввиду аналог на VBS.
2 ASV
 
15.12.06
04:58
CmdString=start.bat

start.bat:
1. запуск 1С, и ждать пока она не закончит работы
2. возвращать содержимое файла 1.log

в 1С
При начале работы системы / очистьь 1.лог
При завершении работы / записать в 1.лог
3 Туц
 
15.12.06
06:10
(2) Не хочу юзать дополнительные файлы, имхо баловство.
Зачем start.bat? Лог можно и без него писать.
4 Туц
 
15.12.06
06:24
(0) Уточнение как из 1С выплюнуть на stdout чего-нить?
5 smaharbA
 
15.12.06
07:08
(4) Никак, это тебе не консоль, нету у оконных приложений стандартного вывода (вернее почти у всех нету, если разработчик не побеспокоился об этом)
Если покумекать, то можно придумать как "плеваться" в стдоут, но вот зачем не пойму
6 Туц
 
15.12.06
07:17
(5) Из скрипта запускаю робота автообмена в режиме enterprise. Если обработка не выполнилась хочу скрипт остановить.
7 Туц
 
15.12.06
07:24
Есть мысль сделать через
   WshShell = СоздатьОбъект("WScript.Shell");
   Locator = СоздатьОбъект("WbemScripting.SWbemLocator");
   
   ServicesSet = Locator.ConnectServer(".");
   WshScriptExec = WshShell.Exec("rundll32.exe kernel32,Sleep");
   
   ДочернийПроцесс = ServicesSet.Get("Win32_Process.Handle="+WshScriptExec.ProcessID);
   РодительскийПроцессИД = ДочернийПроцесс.ParentProcessID;
   WshScriptExec.Terminate();  
   
   РодительскийПроцесс = ServicesSet.Get("Win32_Process.Handle="+РодительскийПроцессИД);
   РодительскийПроцесс.Status = 2;
8 smaharbA
 
15.12.06
07:29
Скрипт запуска

set wshshell=CreateObject("WScript.Shell")
set WshExec=wshshell.Exec("\\BUH\1Cv77.ADM$\BIN.26\1cv7s.exe")
set OutStream = WshExec.StdOut
s=""
do While not OutStream.AtEndOfStream
s=s &  OutStream.ReadLine & vbCr
loop
msgbox S

...
Обработка -

Перем к;
//*******************************************
Процедура Сформировать()
   к=к+1;
   КомандаСистемы("echo Вывдод"+к);
КонецПроцедуры

Процедура ПриОткрытии()
к=0;
Форма.ОбработкаОжидания("Сформировать",1);
КонецПроцедуры
9 Туц
 
15.12.06
07:33
(8)
Пасибо. Кланяюсь.
Кстати (7) не годится. Property Status As string (read-only)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.