Имя: Пароль:
1C
1С v8
Работа с телнет из 1с
,
0 Иван-1C
 
10.05.23
10:24
Добрый день!
Необходимо из 1С передать на принтер команду из 5 цифр по телнету
Телнет установлен.
Из командной строки работает.

Написал функцию, но возникает ошибка: Произошла исключительная ситуация (WshShell.Exec): Не удается найти указанный файл".

Функция Телнет()
  objShell = Новый ComОбъект("WSript.Shell");
  objScriptExec = objShell.Exec("C:\Windows\System32\telnet.exe");
  Возврат 1;
КонецФункции

Если заменить telnet на ping, то функция работает.
telnet  есть в указанном каталоге.

Подскажите куда копать?
1 OldCondom
 
10.05.23
10:37
ЗапуститьПриложение();
2 Aleksey
 
10.05.23
10:39
Ты же телнету ничего не передашь https://techarks.ru/qa/mozhno-li-ispolzovat-paketn-GS/

А так http://blog.openquality.ru/telnet-scripting/
3 Aleksey
 
10.05.23
10:40
И ты уверен что файлик там лежит? У меня к примеру он в папке c:\Windows\WinSxS\amd64_microsoft-windows-telnet-client_31bf3856ad364e35_10.0.19041.1865_none_2cb69c2ada6c4eb4\telnet.exe
4 Волшебник
 
10.05.23
10:48
(1) Здесь лучше КомандаСистемы()
5 NorthWind
 
10.05.23
10:49
я бы использовал plink.exe из пакета PuTTY.
Там можно одной строкой сделать типа вот так:
echo reboot|plink.exe -ssh -noagent -batch -l admin -pw myPa$sw0rd 192.168.102.2

-ssh пусть не пугает, можно написать и -telnet :)
6 Иван-1C
 
10.05.23
12:16
(4) Волшебник крут! Спасибо всем! и NorthWind за подсказку
7 Garykom
 
гуру
10.05.23
12:16
(0) Сделай батник (аля внешнее приложение-микросервис) и запускай его из 1С
8 Иван-1C
 
10.05.23
12:36
(7) в этот файл нужно каким-то образом каждый раз вставлять новую команду
9 Garykom
 
гуру
10.05.23
12:46
(8) Из макета сохраняешь в темп и запускаешь
Это стандартный способ

ВК точно так же например

Плюс в том что у тебя единый способ даже для разных ОС, пофиг винда, линукс, макось, андроид или еще что
Не надо изменять вызов/код в 1С, можно перейти на другой способ
10 Иван-1C
 
10.05.23
14:43
(7) у меня даже батник не получается сделать чтобы работал.
К телнету я обращаюсь telnet 192.168.102.2 4001
а дальше отправить команду не получается, потому что управление переходит к программе телнет и она ждет действий от пользователя, ей чихать на батник.
11 Aleksey
 
10.05.23
15:03
(10) О чем сказано в (2). И в данном случае проще заменить виндовый клиент на другой, который так может. И тебе даже несколько вариантов накидали
12 lEvGl
 
гуру
10.05.23
15:14
winsock еще есть длл от мс
13 lEvGl
 
гуру
10.05.23
15:19
избавляет от записи в файлы и т д, т к  есть события DataArrival и другие, изучите, возможности у нее есть
14 Иван-1C
 
10.05.23
15:41
(12) Ошибка создания объекта Winsock. Класс не лицензирован для использования
15 lEvGl
 
гуру
10.05.23
16:11
(14) входит в состав вин10, 8, 7 и т д. предоставляет activeX
https://infostart.ru/public/119982 тут задают и разъясняют вопросы по это теме
ну и в гугле достаточно много всего
16 Злопчинский
 
10.05.23
17:32
(2) на консольную утилиту можно переопределить входной поток чтобы не тыкать с клавы, а получать из файла...
???
17 lEvGl
 
гуру
10.05.23
17:45
(16) да можно наверно, но зачем нужно, муторно
18 Злопчинский
 
11.05.23
00:18
Запищал в файло последовательность команд и скормил в качестве стдин
19 Fedor-1971
 
11.05.23
09:21
(18) Не получится, это интерактивная игрушка, она возвращает ответ на каждую строку пользователя, т.е. тупо будет пропускать часть ввода из стдин

Насколько я помню у TelNet есть ключ (вроде -с ИмяФайла, можно уточнить TelNet /? в командной строке), т.е. пишем в файл команды, например:
Help
Q

и запускаем "telnet -c ИмяФайла" - вот это выполнит последовательно все внутренние команды telneta и закроет оный
20 lEvGl
 
гуру
11.05.23
09:47
(18) да в хрен о впились эти ваши файлы, на ввод файл, на вывод файл. все внутри проги делать надо, тогда и проблем не будет
21 lEvGl
 
гуру
11.05.23
09:47
*они
22 Иван-1C
 
11.05.23
09:56
(20) внутри проги это через sendkeys и sleep понимаю?
23 Волшебник
 
11.05.23
10:11
(22) лучше через TCP-соединение
24 lEvGl
 
гуру
11.05.23
10:13
(22) прога у нас одна - 1с. возьмите библиотеку из постов выше и дайте ей ума один раз и будете пользоваться этим и дальше, так называемый кейс.
а то уже видно, что вы нашли костыли в виде сендкейс и остального приблудного.
или напишите свою вк в любой среде, в которой есть средства tcp/ip. в 1С их нет
26 NorthWind
 
11.05.23
10:54
(20) все зависит от решаемой задачи. Если разово нужно чет плюнуть на железку, не обрабатывая ответ - можно и через внешнее приложение сделать, особенно если вам никто дополнительно не платит за разборки со средствами более низкого уровня типа ВК и COM-объектов. Если планируется взаимодействие более серьезное - тогда да.
27 Иван-1C
 
11.05.23
11:13
(26) да, сейчас стоит задача плюнуть команду 12345 на железку. Ответ не нужен.
28 NorthWind
 
11.05.23
12:42
(22) можно так. Можно на stdin проги команды направить. Можно файл текстовый скормить с командами. Вариантов полно.
(27) вариантов уже кучу накидали. Берите да делайте, какой-нибудь сработает