Имя: Пароль:
1C
1C 7.7
v7: из DOS в 1С
0 Gugolovski
 
25.01.18
10:04
Из 1С я могу вызвать исполнение команды DOS.

Допустим:
КомандаСистемы("ping 192.168.2.1");

а есть возможность подхватить ответ системы и показать его, например, через "Сообщить()"?
1 NikVars
 
25.01.18
10:06
(0) Пробуй
КомандаСистемы("ping 192.168.2.1 > c:\1.txt");
Потом этот txt анализируй.
2 Злопчинский
 
25.01.18
10:09
Вот и выросло поколение которое не знает ничего о перенаправления ввода-вывода
3 Злопчинский
 
25.01.18
10:09
Например ещё можно такой знак поставить
4 Злопчинский
 
25.01.18
10:10
>> два знака
5 Gugolovski
 
25.01.18
10:11
> это досовские команды?
Это да, мы поколение окон и зизуализации
6 Gugolovski
 
25.01.18
10:17
В целом направление понято. Спасибо (1)
7 NikVars
 
25.01.18
10:17
(5) https://yandex.ru/yandsearch?&clid=2186620&text=досовские%20команды%20вывод%20в%20файл&lr=213
Тогда должны уметь пользоваться поиском.
Щас поиск дает ответы - контента с избытком и даже на русском - не то, что раньше.
Как думешь, какая ссылка твоя?
8 Gugolovski
 
25.01.18
10:21
(7) Ага, я уже тут подобное увидел. https://ru.wikipedia.org/wiki/Список_команд_DOS

Спасибо еще раз
9 MadDAD
 
31.01.18
09:10
(1)
Режим зануды: ON
Вообще-то, DOS тут ни при чем. Ты говоришь о консоли.
Режим зануды: OFF

Вообще для получения консольного вывода можно использовать скрипт Wscript.Shell  и его метод Exec. Это, кмк, красивей чем временные файлы.
10 Скиурус
 
31.01.18
09:14
(9) Скрипт через СОМ звать? Так тогда уж лучше сразу сокет открыть и потыкаться им в нужный айпишник, не привлекая посторонние экзешники.
11 MadDAD
 
31.01.18
09:18
(10) Так-то да. DynWrapX + WinApi будет быстрее.
12 MadDAD
 
31.01.18
09:18
(0)
Как-то примерно так это выглядит.

WshShell = СоздатьОбъект("WScript.Shell")
WshExec = WshShell.Exec("ping 192.168.2.1")
TextStream = WshExec.StdOut;
Вывод = "";
Пока TextStream.AtEndOfStream <> -1 Цикл
    Вывод=ВЫвод +  TextStream.ReadLine + РазделительСтрок;
КонецЦикла;
    
Сообщить(Вывод);
13 NikVars
 
31.01.18
11:07
(12) Вывод = Вывод +  TextStream.ReadLine + РазделительСтрок;
...: Метод не найден
14 ADirks
 
31.01.18
11:36
(13) дык укажи скобки то, раз метод
15 MadDAD
 
31.01.18
11:41
(13) ОЧепятался. Скобок не доложил...

Вывод = Вывод +  TextStream.ReadLine() + РазделительСтрок;
16 MadDAD
 
31.01.18
11:47
Совсем по правильному будет так.

    WshShell = СоздатьОбъект("WScript.Shell");
    WshExec = WshShell.Exec("ping 192.168.2.1");
    TextStream = WshExec.StdOut;
    Вывод = "";
    Пока TextStream.AtEndOfStream <> -1 Цикл
        Вывод = ВЫвод +  OemToAnsi(TextStream.ReadLine()) + РазделительСтрок;
    КонецЦикла;
    
    Сообщить(Вывод);
17 NikVars
 
31.01.18
11:58
(16) Ага! Класс! Спасибо!
Только вот черное окно висит при выполнении пинга...
18 Йохохо
 
31.01.18
12:42
а так? Run("ping 192.168.2.1", 0, true);
19 big
 
31.01.18
12:43
(18) там возвращаемое значение не то
20 MadDAD
 
31.01.18
16:49
(17) Ну если прям ОООЧЕНЬ сильно бесит - то можно подключить DynWrapX и через winApi скрыть окно, но оно того не стоит.