ШримпРолл
06.09.16
✎
16:33
Добрый день господа и дамы.
Прошу помочь в решении сей проблемы. Есть такой код:
Попытка
wshshell=Новый COMОбъект(«WScript.shell»);
wshshell.run(«telnet 192.168.1.2 3312»,2,0);
Сообщить(«Команду выполнил»);
Исключение
Сообщить(«Не удалось по причине: «+ОписаниеОшибки());
КонецПопытки;
Вылетает с ошибкой : Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (0x80070002)
Если в место telnet ввожу ping и убираю порт или просто ввожу notepad, например, то все работает. В чем может быть дело?
orefkov
06.09.16
✎
16:35
errorlookup выдает что 0x80070002 — «Не удается найти указанный файл».
Метранпаж
06.09.16
✎
16:36
А просто из командной строки работает?
А не вин7 и выше утебя ли?
orefkov
06.09.16
✎
16:37
Возможно, телнета нет. Возможно, надо указать полный путь. Возможно, не хватает прав на запуск телнета. Возможно, надо запускать как
cmd.exe /c telnet ….
или
runas
sitex
06.09.16
✎
16:37
(0) Возможно клиентская часть telnet не установлена.
NorthWind
06.09.16
✎
16:38
(0) телнетика по умолчанию в виндах нет, ставить надо
ШримпРолл
06.09.16
✎
16:46
Винда -Windows Server2012
Телнета не было, но подключил. Из командной строки работает. (3) — Сейчас проверю.
ШримпРолл
06.09.16
✎
16:54
Весьма странно.
wshshell.run(«cmd.exe /c telnet 192.168.1.2 3312»,2,0);
Срабатывает, но ничего не происходит. То -есть сообщение «Команду выполнил» есть, а окна открытого с телнетом нет.
orefkov
06.09.16
✎
17:00
ну, cmd стартует, о чем shell и говорит. А вот запустить телнет cmd не может. Права проверь. Если ты командную строку запускаешь через win+R, она запускается под админ-правами, потому и может телнет запустить. А 1С не может.
NorthWind
06.09.16
✎
17:01
(7) там была такая фишка, что wshell.run консольные приложения прятать умеет. Какой-то ключ у команды за это отвечает, могу даже посмотреть какой
Метранпаж
06.09.16
✎
17:03
(8) » Если ты командную строку запускаешь через win+R, она запускается под админ-правами»
С чего бы?
orefkov
06.09.16
✎
17:07
(10)
Я нажимаю Win+R и там русским языком написано:
«Это задание будет выполнено с правами администратора».
NorthWind
06.09.16
✎
17:07
Set Cmd = CreateObject(«WScript.Shell»)
Cmd.Run «telnet.exe», 1, True
у меня вот так простартовывает, открывает окно. Win10.
orefkov
06.09.16
✎
17:07
+(11)
не «выполнено», а «создано», извиняюсь.
Метранпаж
06.09.16
✎
17:08
(11) У меня вин7 — и такой надписи нет
ШримпРолл
06.09.16
✎
17:08
(9) Я действительно использую этот ключ. Но команду пинг он у меня скрывает просто свернув. А тут ничего нет. Хотя сейчас проверю, выключив вообще этот ключ.
Строку я реально через win+R открываю.
NorthWind
06.09.16
✎
17:09
(15) -> (12). Только что проверил.
ШримпРолл
06.09.16
✎
17:13
У меня (12) не стартует(
Все та же ошибка.
Пойду права смотреть.
orefkov
06.09.16
✎
17:14
(14)
Всё может быть…
Torquader
06.09.16
✎
18:15
TelNet где лежит ?
Возможно, что он должен лежать в директории, которая прописана в пути.
Не забываем, что telnet в Windows после Xp ставится как дополнительная программа.
ШримпРолл
06.09.16
✎
19:01
Telnet лежал на диске С в папке system32. И это был еще один подводный камень.
Для запуска телнета помимо установки прав, пришлось перенести все его файлы в доступную папку. т.к. system32 командная строка из 1С (без прав) не видела.
Всем огромное спасибо!
С вашей помощью все получилось.
NorthWind
07.09.16
✎
07:48
(20) в 2012 все настолько круто с правами, что даже нельзя запускать утилиты командной строки, находящиеся по PATH?
NorthWind
07.09.16
✎
07:49
вроде даже в никсах под обычным пользователем телнетом по умолчанию можно пользоваться спокойно…
ШримпРолл
07.09.16
✎
18:10
(21) Видимо настолько.
А я пришел к новому тупику.
Я запускал telnet и командами типа:
wshshell.SendKeys(«сообщенька»);
засылал различные сообщеньки. Но обнаружил, что при смене раскладки клавиатуры ничего не работает. То-есть SendKeys эмулирует нажатие на кнопку и чувствительна к раскладке.
Как это можно обойти? Знает кто-нибудь?
ШримпРолл
07.09.16
✎
18:15
Реально вообще адекватно управлять телнетиной из 1С?
ШримпРолл
07.09.16
✎
18:21
Или подскажите, как можно передать на определенный порт сервера простые строки?
Например, отправить на 192.168.1.2 3312 строку «привет» ?
orefkov
07.09.16
✎
18:56
ничего, кроме как создать временный файл с расширением cmd и с содержимым
echo привет|telnet args
и запуска этого файла — мне в голову не приходит.
Почитай справку к телнету, может он умеет из файла текст брать?
NorthWind
07.09.16
✎
19:04
(25) ВК какую-нибудь присмотреть для сокетов. Или свою написать. Как я понял, с произвольным сетевым взаимодействием (кроме почты и web) продукты 1С пока не особенно дружат.
Torquader
07.09.16
✎
20:08
(25) Телнет — консольный. Его через SendKey управлять сложно.
Можно запускать через потоки и давать команды.
ШримпРолл
07.09.16
✎
20:15
Большое спасибо за ваши предложенные варианты. Буду пробовать все. О результате отпишусь.
ШримпРолл
07.09.16
✎
20:15
(26) Где-то читал, что умеет. Проверю на практике.
Torquader
07.09.16
✎
20:36
orefkov
08.09.16
✎
12:32
Есть еще вариант кстати запускать не через .Run, а через Exec. Тогда возвращается объект, в котором есть StdIn StdOut StdErr потоки, и в StdIn поток делать Write.
orefkov
08.09.16
✎
12:35
+(32)
Вот так я запускал одну консольную прогу, которой надо было потом ввести пароль и прочитать вывод:
var run = ‘»‘ + myFolder + ‘cntlm\cntlm.exe» -c «‘ + pathToCntlmIni + ‘» -I -M ‘ + remoteUrl + ‘ -u «‘ + proxyUser + ‘» ‘ + proxyAddress;
var exec = wsh.Exec(run);
exec.StdIn.Write(proxyPass + ‘\n’);
var out = exec.StdOut;
var text = »;
while(!out.atEndOfStream)
text += out.ReadAll();
Torquader
08.09.16
✎
21:15
(33) Ты (31) смотрел — там именно это и описано.
Хотя, согласен, некоторым нужно разжевать и проглотить.
orefkov
08.09.16
✎
21:20
(34)
Ясно.
ЗЫ: забавно, в (33) движок форума скушал один слэш в ‘cntlm\cntlm.exe» — там два слэша, а не один.
Torquader
08.09.16
✎
21:53
(35) Как говорится, приятного ему аппетита — и пусть его создателю будет стыдно.
ШримпРолл
09.09.16
✎
11:25
Torquader и orefkov : Супер! Большое спасибо! Таким методом реально можно управлять консольными программами. Класс) Задача решилась.
Спасибо)
Платформа: 8.3.8.1964
Конфигурация: ()
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
Режим совместимости: Версия8_2_16
Инструменты разработчика: Портативные 4.08p
Попал на такую ошибку, при выполнении запроса:
{ВнешняяОбработка.ирПлатформа.МодульОбъекта(6117)}: Ошибка при вызове метода контекста (Run)
WshShell.Run(СтрокаЗапуска, 0, ОжидатьЗавершения);
по причине:
Произошла исключительная ситуация (0x80070002)
Ситуация вот в чем. Работаю удаленно на клиентском сервере — права ессно порезаны. Из-за этого сначала не мог пользоваться отложенной отладкой, т.к. ИР у меня в сессии клиента, а суперпользователь 1С в него писать не может. Потом осенило — расшарил папку с ир, стал писать путь к ИР для отложенной отладки через «//». При этом дал на папку все права для everyone. Получилось. Собрать данные для запроса получилось, а вот выполнить его — нет.. Несмотря на то, что контекст отладки был получен через сетевой путь, сам запрос почему-то открывается по локальному адресу. Т.е. в заголовке консоли запросов я вижу не «//..<Путь к папке ИР>», а «C:\Documents and settings..<локальный путь к папке ИР>».
Добавлено (21.05.2017, 11:39)
———————————————
Сохранил запрос как внешний, открываю через сетевой путь, он мне опять такую же ошибку. Зашел в отладчик — а там в рун все-равно с рабочего стола запускает…
Добавлено (21.05.2017, 11:46)
———————————————
Судя по всему ИР при запуске использует метод «ИспользуемоеИмяФайла», от которого и строит все остальные пути.. Можно ли сделать настройку для переопределения этого параметра?
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
Templlg opened this issue
May 13, 2023
· 2 comments
Labels
question
Further information is requested
Comments
Надеюсь в тот раздел )
В серверной и файловой базе не запускается клиент тестирования.
К серверу подключаюсь по RDP
Галочка у пользователя «Защита от опасных действий» снята
Укажите:
- Версия Vanessa Automation — 1.2.040.15
- Версия платформы — 1С:Предприятие 8.3 (8.3.22.1750)
- Режим совместимости базы, где запускается Vanessa Automation — Версия 8.3.17
- Операционная система — windows server 2016
Конфигурация на сервере 1С:ERP Управление предприятием 2 (2.5.10.93) тонкий клиент
Конфигурация файловая база IRP (2021.43.2644) тонкий клиент
> Прикладывайте файлы скриншотов
![2023-05-13_19-52-00](https://github.com/Pr-Mex/vanessa-automation/assets/119128603/a683ea9a-21c0-41c2-9927-f2187a8e2add)
Сообщение об ошибке 13.05.2023 17:47:56 {ВнешняяОбработка.VanessaAutomation.Форма.ОбщегоНазначенияVA.Форма(642)}: Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (0xffffffff)
Templlg
changed the title
Не запускается клиент тестирования. «Ошибка при вызове метода контекста (Run)
Не запускается клиент тестирования. «Ошибка при вызове метода контекста (Run)»
May 13, 2023
@Templlg
Если запустить 1С под правами администратора — проблема останется?
@Templlg Если запустить 1С под правами администратора — проблема останется?
Добавили права, все запустилось. Спасибо
Labels
question
Further information is requested
2 participants
ropsa 0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
||||
1 |
||||
1C 8.x Оповещения активных пользователей28.06.2016, 11:07. Показов 7084. Ответов 13 Метки нет (Все метки)
Здравствуйте! Необходимо оповещать пользователей, например о прекращении работы программы. Было найдено решение:
Но как выяснилось, «net send» не работает для Windows 7. Подскажите, как можно исправить, чтобы работало на Windows 7 или возможно есть какие-нибудь другие способы оповещения. Заранее спасибо!!
0 |
Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
|
28.06.2016, 12:48 |
2 |
0 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
28.06.2016, 14:00 [ТС] |
3 |
попробовала заменить «net send » на «msg » но ничего в 1с не получилось. Если пробовать отправку сообщений через командную строку, то отправляется только самой себе
0 |
Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
|
28.06.2016, 15:36 |
4 |
ropsa, может доступа к сеансам нет? Ошибка то какая? Добавлено через 2 минуты
0 |
207 / 181 / 31 Регистрация: 24.10.2011 Сообщений: 743 |
|
28.06.2016, 15:39 |
5 |
msg работает исключительно с правами админа.
0 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
28.06.2016, 16:03 [ТС] |
6 |
Ошибка такая:
0 |
Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
|
28.06.2016, 17:43 |
7 |
Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (0x80070002) Команда для run «не съедобная»
0 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
29.06.2016, 08:28 [ТС] |
8 |
Это как-то можно исправить?
0 |
Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
|
29.06.2016, 20:56 |
9 |
Это как-то можно исправить? да проверить работоспособность команды вне 1С
0 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
30.06.2016, 09:27 [ТС] |
10 |
отправляется только самой себе, но из 1с даже себе не могу отправить
0 |
Dethmontt Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
||||
30.06.2016, 13:41 |
11 |
|||
ropsa, я не знаю что вы там проверяете, все отлично работает
Добавлено через 1 минуту
отправляется только самой себе Запускаться msg должен с правами АДМИНА, только АДМИН может отправлять ВСЕМ тут все написано, читайте внимательнее
ropsa, cmd msg Не отсылаются сообщения командой msg
2 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
30.06.2016, 13:49 [ТС] |
12 |
Даже взяла и скопировала ваш код, но у меня все та же ошибка… Добавлено через 52 секунды
0 |
Модератор 3744 / 2932 / 581 Регистрация: 10.03.2011 Сообщений: 11,539 Записей в блоге: 1 |
|
30.06.2016, 13:51 |
13 |
ropsa, замените в команде звездочку * на имя сеанса (имя пользователя)
2 |
0 / 0 / 0 Регистрация: 17.04.2015 Сообщений: 121 |
|
30.06.2016, 13:53 [ТС] |
14 |
Спасибо большое!!!
0 |
Вот тут чувак еще один способ предложил: «В итоге я понял, что нормальной реализации с помощью языка 1С нету, так как в большинстве случаев используется подключение Wscript.Wshell, и видимо не просто так. Но использовать первый вариант я совершенно не хотел, из за записи файла на диск.
У меня был небольшой опыт работы c VBScript, поэтому я знал, что в скрипт можно переадавать параметры. Этим я и воспользовался. Был написан простой скрипт ожидания, который принимал один параметр:
wscript.sleep wscript.arguments(0)
Сделать это очень просто: открываем блокнот, вставляем строчку , которая написана выше, жмем «Сохранить как…», и сохраням как sleep.vbs.
Этот файл необходимо положить на сервер(для вызова на сервере) и на клиент(для вызова на клиенте), в моём случае(сервер терминалов), я положил файл на оба сервера(терминальный и на сервер 1С).
Теперь у нас есть скрипт который будет ждать столько, сколько мы скажем, осталось его вызвать из программы.
Вызов происходит в две строчки кода:
Я положил процедуру в общий модуль на клиенте, и в общий модуль на сервере, так же в параметр задал ПутьХраненияФайла. Вот таким образом с помощью Wscript, без постоянного создания файлов скрипта можно реализовать паузу в работе кода с минимальным значением ~0,001 секунда.
Процедура ОбработкаОжидания(Секунда)
scr = Новый COMОбъект("WScript.Shell");
scr.Run("Wscript.exe ""C:\temp\sleep.vbs"" "+секунда*1000,0,1);
КонецПроцедуры[/pre]