|
v7: Некорректно выполняется *,bat файл при запуске из 1с | ☑ | ||
---|---|---|---|---|
0
Enlighted
10.05.15
✎
10:05
|
День добрый волшебный народ. У меня нарисовалась следующая проблема. Имеется bat-файл при выполнении из командной строки или простом запуске двойным тыком из системы выполняется корректно.
При запуске из 1с не выполняется одна строка конкретно эта: msg * некий текст Пробовал и указывать имя конкретного пользователя и дёргать его из системной переменной не выдаёт он мэссэдж бокс хоть тресни. Пробовал вызвать из 1с двумя способами: WShell.Run("cmd /c c:\SMS\cheker.bat"); и КомандыСистемы("c:\SMS\cheker.bat"); Второй вариант не подходит, ибо пока бат файл не завершится 1с не работает. |
|||
1
Garikk
10.05.15
✎
11:12
|
если я ещё не всё забыл в бат файле надо через start запускать, тогда 1С "отпустит"
|
|||
2
Enlighted
10.05.15
✎
12:04
|
(1) Да проблема не в том что 1с не отпускает, а в том что msg * в батнике запущенном из 1с не срабатывает
|
|||
3
ДенисЧ
10.05.15
✎
12:07
|
<телепате моде он>
Клиент-сервер? На сервере запрещена служба сообщений? </моде офф> |
|||
4
Enlighted
10.05.15
✎
12:14
|
Нет, элементарно запущена на локальной машине 1с ка с локальной файловой базой. Работа по сети даже не предполагается. Батник живёт тоже на локальной машине.
|
|||
5
Cap_1977
10.05.15
✎
12:16
|
(4) ОС какая ?
|
|||
6
Enlighted
10.05.15
✎
12:18
|
(5) win 7 x64 предполагается работа этой же программы и на XP
только что попробовал указать в батнике полный путь до msg.exe эффекта ноль. |
|||
7
Enlighted
10.05.15
✎
12:20
|
Текст батника вот:
@echo off :test tasklist|find /c "cmd2phone" > temp.tmp set /p fi="" < temp.tmp del temp.tmp if NOT %fi% == 1 goto :fin ping -n 30 localhost > nul goto :test :fin C:\Windows\System32\msg.exe * /time:9999 Џа®Ја ¬¬ а ббл«ЄЁ § ўҐаиЁ« бў®о а Ў®вг. текст строки вызова из 1с вот: WShell.Run("cmd /c c:\SMS\cheker.bat"); |
|||
8
silverbear
10.05.15
✎
12:52
|
(7) давайте по порядку, не из 1С батник срабатывает ?
|
|||
9
Torquader
10.05.15
✎
12:57
|
bat-файл запускается командой Call.
Только вопрос - а через Windows Scripting Host переписать не проще ? Причём ожидание завершения можно через блокировку файла сделать. |
|||
10
Enlighted
10.05.15
✎
13:04
|
(8) (9) Давайте я наверное более полно задачу опишу
1) из 1С вызывается выполнение внешней программы с определенными параметрами. (выполнятся она будет минут 15). Тем временем в 1с нужно продолжать работу. 2) из 1с-ки тут-же следом вызывается выполнение сего батника, он будет висеть и периодически проверять не завершился ли процесс, по завершении процесса он должен выдать сообщение на экран Батник при ручном запуске (из командной строки и из проводника) работает корректно висит себе и раз в 30 секунд осуществляет проверку процесса, как только процесс завершается батник выдаёт соответствующее сообщение на экран. |
|||
11
Enlighted
10.05.15
✎
13:06
|
При запуске из 1с батник тоже висит и отслеживает процесс, однако одна беда, строка "msg * текст" не работает вообще никак.
|
|||
12
Torquader
10.05.15
✎
13:11
|
(11) Наверное, он просто запускается в свёрнутом экране.
P.S. для отправки сообщения на экран как раз WScript и подходит - там через VbScript можно запустить программу, и также прекрасно дожидаться её завершения, а потом выдать сообщение через MsgBox или открыть окно Ie на весь экран, чтобы пользователь гарантированно его увидел. А запускать сценарий можно через тот же метод ЗапуститьПриложение и 1С будет продолжать свою работу. |
|||
13
Enlighted
10.05.15
✎
13:19
|
(12) Батник конечно запускается в свёрнутом экране, однако MSG выдаёт новое окно в винде не в консоли а прямо на экране и срабатывает при ручном запуске хоть из свёрнутого хоть из развёрнутого вида.
Зачем мне усложнять задачу вб скриптами если простой батник справляется с этой задачей. Темболее моё решение не требует дополнительных средств разработки и может выполняться на любой машине с любыми библиотеками. |
|||
14
palpetrovich
10.05.15
✎
13:32
|
а эта "внешняя программа с определенными параметрами" не может в конце работы сформировать тхт-файлик? еслида, то может ну его, бат-файл? проверять периодически из 1с в обрабоке ожидания тхт-файлик на наличеи, да и все?
|
|||
15
Enlighted
10.05.15
✎
14:02
|
(12) Можете попробовать выполнить в командной строке команду "msg * любой текст"
(14) Внешняя программа пишет лог на постоянной основе пока не закроется. А сделать так чтобы по завершении она давала тхт не представляется возможным. |
|||
16
Enlighted
10.05.15
✎
14:20
|
(14) Вообще не хотелось бы после запуска этой программы хоть скольнибудь нагружать 1с-ку. Поэтому и писался батничек всего строк то 7 функциональных
|
|||
17
Enlighted
10.05.15
✎
14:29
|
шайтанама ни с того ни с сего вдруг взяла и заработала.
Всем спасибо за участие глюк повторить пока не удалось поэтому решения собственно найдено не было. |
|||
18
Torquader
10.05.15
✎
15:48
|
(17) Просто, иногда свёрнутое окно ДОС-программы планировщик просто останавливает, так как считает, что оно не нужно.
|
|||
19
Enlighted
10.05.15
✎
17:28
|
(18) Не останавливалось, ибо когда процесс закрывался свёрнутое окно дос программы тоже закрывалось, и даже писало в файл о своём завершении
|
|||
20
Torquader
10.05.15
✎
17:52
|
(19) Тогда, вполне вероятно, что сообщение получал другой пользователь.
Потом, не следует забывать, что служба сообщений Windows - очень ненадёжная вещь. P.S. попробуйте указать имя пользователя явно. |
|||
21
Enlighted
10.05.15
✎
18:21
|
(20) оно писало в лог файл при завершении батника имя текущего пользователя. Всё было верно
Но я уже написал что глюк прошел самостоятельным образом всем спасибо за участие если повторится я подниму ветку :) |
|||
22
Torquader
10.05.15
✎
18:47
|
(21) Тогда, если наблюдается глюк, то сразу перезапускай службу сообщений.
Ещё рекомендуется убрать установку времени ожидания, так как в течение этого времени "умная" система будет ждать доставки сообщения - не факт, что следующие сообщения дойдут. |
|||
23
Enlighted
10.05.15
✎
19:24
|
(22) если отключить временной интервал то оно будет исчезать раньше чем его прочитаешь
|
|||
24
Enlighted
10.05.15
✎
19:26
|
а нет, всё время убрал вроде не исчезает
|
|||
25
Torquader
10.05.15
✎
21:18
|
(24) Его же пользователь закрывает
Просто интервал и ключи /v или /w нужны для того, чтобы дождаться оповещения пользователя и после этого продолжить что-то делать (видимо, они мечтали о том, что пользователю можно будет задать вопрос - очень бы было хорошо и удобно - но, не сделали же). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |