Имя: Пароль:
1C
1C 7.7
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
+ Запустить приложение

Вот тут с RUN работает, без досовского окна :)
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, и еще с пяток.