Имя: Пароль:
1C
1C 7.7
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 нужны для того, чтобы дождаться оповещения пользователя и после этого продолжить что-то делать (видимо, они мечтали о том, что пользователю можно будет задать вопрос - очень бы было хорошо и удобно - но, не сделали же).
Основная теорема систематики: Новые системы плодят новые проблемы.