|
v7: Запустить на исполнение .cmd | ☑ | ||
---|---|---|---|---|
0
YurAnt
30.10.13
✎
10:35
|
Доброго времени суток, господа-форумчане.
Проблема следующая... Есть cmd-скрипт ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt ODBCView.exe - прога к-я подключается к бд и выполняет sql-запрос и возвращает результ в тхт. если CMDшку запустить руками (даблклик) оно запускается и нормально выгружает всё необходимое. Если из под 1С... через ЗапуститьПриложение(Путь_к_CMD); то даже визуально заметно то cvlirf выполниться не успевает (руками - оно запускается, висит секунду - полторы, исчезает, а из 1Ски - окно появляется и тут же исчезает) вот и думаю в чем проблема ? Благодарен за любые советы. |
|||
1
YurAnt
30.10.13
✎
10:36
|
черт(( не уследил, тему надобно в v.7 (если это имеет принципиальное значение)
|
|||
2
YurAnt
30.10.13
✎
10:54
|
http://savepic.su/3633734.png
выглядит как-то так. лежит в одной папке. т.е. CVLirf запускает exe с параметрами, к-й возвращает результат запроса в тхт но почему не происходит полноценного выполнения понять не могу(( |
|||
3
Z1
30.10.13
✎
11:03
|
(0) так надо запускать приложение с ожиданием
его завершения ( запуститьПриложение не ждет ) или второй путь (может быть даже более правильный ) использовать вместо subj 1с++ |
|||
4
YurAnt
30.10.13
✎
11:09
|
(3) благодарю... про WSHShell читаю,
а можно немного подробнее (или хотя бы ссылку) о subj и 1с++ |
|||
5
YurAnt
30.10.13
✎
11:16
|
Попытка
Shell = CreateObject("WScript.Shell"); Исключение Shell = ""; сообщить("Ошибка: "+ОписаниеОшибки()); Возврат КонецПопытки; Shell.Run(ПутьКCMD, 1, -1); матерно ругается на Shell.Run(ПутьКCMD, 1, -1); выдает: {C:\...путь к обработке...(166)}: : |
|||
6
ЧеловекДуши
30.10.13
✎
11:19
|
(2) Скажи можайлуста, тебе чем так Батник не нравится? :)
ЗапуститьПриложение("<Твой КМД>") - Так пробывал? |
|||
7
ЧеловекДуши
30.10.13
✎
11:20
|
Как запустить конфигуратор для автообмена в невидимом режиме
set wshshell=CreateObject("WScript.shell") errcode=wshshell.run("notepad.exe",0,0) |
|||
8
ЧеловекДуши
30.10.13
✎
11:21
|
||||
9
ЧеловекДуши
30.10.13
✎
11:22
|
||||
10
ЧеловекДуши
30.10.13
✎
11:23
|
||||
11
ЧеловекДуши
30.10.13
✎
11:24
|
||||
12
YurAnt
30.10.13
✎
11:27
|
(6) не дает выполниться батнику.
(10) читал, результат (5) (8) см (5) =( |
|||
13
YurAnt
30.10.13
✎
11:29
|
так или иначе буду дальше искать варианты, извращаться по всякому
|
|||
14
ЧеловекДуши
30.10.13
✎
11:30
|
(12) Мне побоку, что ты неможешь писать батник :)
Выложи текст батника, что ты там пишешь такого, чего не получается ? |
|||
15
ЧеловекДуши
30.10.13
✎
11:31
|
+(12) >>> (10) читал, результат (5)
Ты не думал, что твой КМД файл не рабочий? :) |
|||
16
YurAnt
30.10.13
✎
11:34
|
руками то нормально запускается... отрабатывает и сохраняет в тхт выборку =/
|
|||
17
ЧеловекДуши
30.10.13
✎
11:35
|
+ (0) ты пробовал получить значения запроса самостоятельно? :)
Прямым запросом, 1С++ как раз для комфортного написания запросов для 1С-ных БД :) Что за SQL БД к которой ты подключается? (Это БД 1С, какая другая?) |
|||
18
ЧеловекДуши
30.10.13
✎
11:35
|
(16) Зачем из 1С в файл, когда можно прямо в 1С?
|
|||
19
YurAnt
30.10.13
✎
11:36
|
в батнике запускается ехешник с параметрами.
пробовал и вместо батника прописывать напрямую путь с параметрами в коде и обращаться к ехешнику. содержимое батника ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt |
|||
20
ЧеловекДуши
30.10.13
✎
11:37
|
(19) Ты не понял... или не дочитал до (17) :)
Я не про эту фигню ODBCView.exe - http://ru.systemexplorer.net/file-database/file/odbcview-exe/10258297 |
|||
21
YurAnt
30.10.13
✎
11:39
|
Бухгалтерия v 4.5 ODBC соединение с GESTORI
тема обсуждалась уже... и затихла, пришел вот к этому. Progress with Single-Tier "Lite" Edition Drivers Первый же пункт кажется уже идет лесом, ибо (по словам админа) не в сокет режиме(( 1) Ensure that your Progress database is running in sockets mode. |
|||
22
YurAnt
30.10.13
✎
11:40
|
суть в том что напрямую подключаться не вариант. потому пляшу с бубном
|
|||
23
ЧеловекДуши
30.10.13
✎
11:43
|
(22)Судя по советам в теме, тебе советовали скачать нужный драйвер, да и код соединения через компоненту 1С++ тут лишний :)
1С++ Всего лишь интерфейсная часть 1С + SQL :) |
|||
24
Z1
30.10.13
✎
11:45
|
(4)объект bfile из
http://www.1cpp.ru/forum/YaBB.pl?num=1178538146/10#10 умеет запускать обертку с ожиданием ( это обертка над win api) на мой взгляд немного лучше wshshell.run ( иногда с wsh на некотоых компах бывают непонятные проблемы ) "а можно немного подробнее (или хотя бы ссылку) о subj и 1с++" вот тебе ссылка : http://www.1cpp.ru/forum/YaBB.pl http://www.1cpp.ru |
|||
25
ЧеловекДуши
30.10.13
✎
11:45
|
+(22) Попробуй обратиться через ...RUN... на прямую:
Запустить приложение WshShell = CreateObject("WScript.Shell"); WshShell.Run("ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt",7,-1); |
|||
26
ЧеловекДуши
30.10.13
✎
11:47
|
+(25) >> WshShell.Run("ODBCView.exe
WshShell.Run("<Укажи полый путь>\ODBCView.exe |
|||
27
ЧеловекДуши
30.10.13
✎
11:47
|
+ Возможно все дело в том, что ту не указал полный путь к "ODBCView.exe"? :) (как теория проблемы)
|
|||
28
YurAnt
30.10.13
✎
11:56
|
(27) проблема с корректностью пути исключена. механизм сборки пути до файла уже протестил - всё ок.
(25) пытался уже, выдает ошибку (5) (в которой кроме ":" ничего не описано) Ошибка: WshShell.Run(ODBCView,7,-1); {C:\DOCUMENTS AND SETTINGS\...путь до обработки...\МояОбработка.ERT(158)}: : |
|||
29
ЧеловекДуши
30.10.13
✎
11:59
|
(28) Мдя... Ты значение переменной "ODBCView", покажи, нам...
Нам так то невидно, что ты там посылаешь :) Попробуй просто выполнить "ODBCView.exe" без параметров :) |
|||
30
ЧеловекДуши
30.10.13
✎
12:01
|
+(28) Ну еще, ты когда указываешь параметр " tr.sql tr.txt"
Ты хоть понимаешь, что твоя прога "ODBCView" возможно даже не КУРИТ, где находится скрипт "tr.sql" и Куда нужно положить файл "tr.txt"? :) |
|||
31
Z1
30.10.13
✎
12:01
|
(27) может твоему приложению нужно чтобы запускалось именно из
той директории. т.е. в батнике переходишь в директорию и запускаешь ./ODBCView.exe |
|||
32
ЧеловекДуши
30.10.13
✎
12:02
|
(31) Ну да ему (28), скорей всего это и делает...
Но думается там где лежит батник, лежит и скрипт в "tr.sql" :) |
|||
33
ЧеловекДуши
30.10.13
✎
12:03
|
+(28) У 1С своё представление о текущем каталоге :)
|
|||
34
YurAnt
30.10.13
✎
12:07
|
(31) т.е. ты хочешь сказать что ФС.ТекКаталог() должен быть равен пути до файла ?
|
|||
35
ЧеловекДуши
30.10.13
✎
12:10
|
(34) Нет... я хочу сказать, что ты должен указать в командной строке Полный путь ко всем файлам и попробовать.
Ибо... 1С запускает приложения с рабочим каталогом "С:\" :) |
|||
36
ЧеловекДуши
30.10.13
✎
12:11
|
+(34) И это попробуй... самому любопытно :)
Просто я так не рискую, и обычно пишу полный путь, 1С такая непредсказуема, порой |
|||
37
YurAnt
30.10.13
✎
12:15
|
исключено. я уже писал что путь я формирую отдельно.
путь до каталога базы передается параметром (нормально тут всё !!! он корректно передается, поскольку лежащий рядом тхт открывается. //ПутьКTXT = ПутьКБазе + "ЗагрузкаТранспортныхРасходовИзGESTORI\tr\tr.txt"; //Файл.Открыть(ПутьКTXT); ПутьКCMD = ПутьКБазе + "ЗагрузкаТранспортныхРасходовИзGESTORI\tr\ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt"; //ЗапуститьПриложение(ПутьКCMD); теккат = ПутьКБазе + "ЗагрузкаТранспортныхРасходовИзGESTORI\tr\"; ФС.УстТекКаталог(теккат); //ГдеМыНаходимся = ФС.ТекКаталог(); //Сообщить(ГдеМыНаходимся); WshShell = CreateObject("WScript.Shell"); WshShell.Run(ПутьКCMD,7,-1); здесь я приравниваю теккаталок к местоположению бат/ехе файлов. ошибка та же как и в (5)и(28) |
|||
38
vladmenleo
30.10.13
✎
12:17
|
попробуй в батнике написать
cd c:\где_все_лежит start /WAIT ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt может так проканает |
|||
39
ЧеловекДуши
30.10.13
✎
12:21
|
(37) Упрямый... твои проблемы только из за этой Лени :)
Тебе трудно прописать полные пути? |
|||
40
YurAnt
30.10.13
✎
12:21
|
так а смысл? с батником и так полный порядок... если его запускать руками или из командной строки он корректно отрабатывает и делает свое черное дело.
проблема запустить его из 1С =/ |
|||
41
YurAnt
30.10.13
✎
12:23
|
(38) vladmenleo, попробую... хотя не представляю как это может повлиять на результат
|
|||
42
ЧеловекДуши
30.10.13
✎
12:23
|
(40) Смысл в "cd c:\где_все_лежит" - устанавливает текущим каталогом, тот который укажешь...
start /WAIT - Ну, запускает и ждет завершения... При этом батник висит до скончания веков, пока не завершится работа "ODBCView" |
|||
43
ЧеловекДуши
30.10.13
✎
12:23
|
(40) Да эта проблема только у тебя :)
У меня все работает :) |
|||
44
arsik
гуру
30.10.13
✎
12:25
|
даже ежу понятно, что проблема с поиском tr.sql tr.txt
|
|||
45
ЧеловекДуши
30.10.13
✎
12:26
|
(44) А автору нет :)
|
|||
46
arsik
гуру
30.10.13
✎
12:28
|
(45) Школота
|
|||
47
YurAnt
30.10.13
✎
12:47
|
проблема была даже не в путях, а в кодировке бат файла.
Урок: не все кодировки одинаково понимаемы виндой :) Отдельная благодарность vladmenleo. |
|||
48
arsik
гуру
30.10.13
✎
13:33
|
(47) Смешно. Как не в путях, когда вместо
cd c:\где_все_лежит start /WAIT ODBCView.exe -s -d ; DSN=ges3;UID=user;PWD=pass tr.sql tr.txt можно было изначально все полные пути прописать? |
|||
49
YurAnt
30.10.13
✎
15:07
|
даже если прописывал полные пути, но кодировка не была досовской, скрипт крашился. Вот смеху то.
|
|||
50
ЧеловекДуши
30.10.13
✎
15:12
|
(47) Какая кодировка?
Имена файлов нужно всегда на Латинице... :) |
|||
51
ЧеловекДуши
30.10.13
✎
15:13
|
(49) Бред...
|
|||
52
Зойч
30.10.13
✎
15:14
|
(49) cp 1251 в начале файла спасет отца русской демократии
|
|||
53
ЧеловекДуши
30.10.13
✎
15:14
|
(48) Да у него пути с латиницей... он нам тут теперь парит, что типо Ось не понимает Кирилицу :)
|
|||
54
ЧеловекДуши
30.10.13
✎
15:14
|
+(53) Да у него пути с кирилицей :)
|
|||
55
Зойч
30.10.13
✎
15:16
|
(54) ничего плохого в этом нет ))
|
|||
56
Ёпрст
30.10.13
✎
15:19
|
(0)
СтрокаКоманды = "cmd.exe /c "+ПутьКCMD; whs = СоздатьОбъект("WScript.Shell"); whs.Run(СтрокаКоманды,0,1); |
|||
57
Ёпрст
30.10.13
✎
15:19
|
наслаждайся
|
|||
58
arsik
гуру
30.10.13
✎
15:20
|
(56) (57) :))
|
|||
59
Ёпрст
30.10.13
✎
15:21
|
даже лучше так:
СтрокаКоманды = "cmd.exe /c "+СодержимоеСМД; whs = СоздатьОбъект("WScript.Shell"); whs.Run(СтрокаКоманды,0,1); |
|||
60
Ёпрст
30.10.13
✎
15:21
|
(58) и че смешного ?
|
|||
61
arsik
гуру
30.10.13
✎
15:22
|
(60) ты ветку сначала смотрел?
|
|||
62
Ёпрст
30.10.13
✎
15:22
|
(61) нет
|
|||
63
YurAnt
30.10.13
✎
15:32
|
воу, воу ребят) хватит бугуртить, взлетело же...
(50) OEM 866 А в общем, тему считаю закрытой, поскольку проблема решена. |
|||
64
YurAnt
30.10.13
✎
15:33
|
подобрал методом тыка... до этого перепробовав cp1251, ANSI, UTF-8, и еще с пяток.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |