|
Создание батника в 1с82 | ☑ | ||
---|---|---|---|---|
0
Emilio
19.12.12
✎
15:34
|
Пишу обработку, у которой одна из процедур должна создавать батник и потом этот батник должен запуститься. Сам батник должен закрыть процессы 1с и сразу же запустить приложение. Вот процедура:
Процедура СоздатьБат() Путь = "C:\"; ТД = Новый ТекстовыйДокумент; ТД.УстановитьТипФайла(КодировкаТекста.ANSI); ТД.УстановитьТекст("cd |@echo off |taskkill.exe /f /im 1cv8* |ping -15 seconds 0.0.0.1 > nul |""c:\Program Files (x86)\1cv82\8.2.13.219\bin\1cv8.exe""" "ENTERPRISE" "/S""vrnhd1c-server\lp_sap""" "/N""lpsap""" "/P"""" |""c:\Program Files\1cv82\8.2.13.219\bin\1cv8.exe""" "ENTERPRISE" "/S""vrnhd1c-server\lp_sap""" "/N""lpsap""" "/P"""" |""c:\Program Files (x86)\1cv82\8.2.13.199\bin\1cv8.exe""" "ENTERPRISE" "/S""vrnhd1c-server\lp_sap""" "/N""lpsap""" "/P"""" |""c:\Program Files\1cv82\8.2.13.199\bin\1cv8.exe""" "ENTERPRISE" "/S""vrnhd1c-server\lp_sap""" "/N""lpsap""" "/P"""""); ТД.Записать(Путь + "reboot1s.bat"); КонецПроцедуры Собственно проблема в том, что в батник текст записывается коряво и из-за чего батник до конца не отрабатывает, т.е. процессы рубит, а когда доходит дело до запуска 1с, то запускается только до места выбора ИБ - пакетного запуска 1с нет. Прошу помощи в подсказке как записать текст в батник, что бы он выглядел правильно. ЗЫ. Что бы было ясно как записывается коряво текст в бат, ниже из батника текст: cd @echo off taskkill.exe /f /im 1cv8* ping -15 seconds 0.0.0.1 > nul "c:\Program Files (x86)\1cv82\8.2.13.219\bin\1cv8.exe" ENTERPRISE /S"vrnhd1c-server\lp_sap" /N"lpsap" /P"" "c:\Program Files\1cv82\8.2.13.219\bin\1cv8.exe" ENTERPRISE /S"vrnhd1c-server\lp_sap" /N"lpsap" /P"" "c:\Program Files (x86)\1cv82\8.2.13.199\bin\1cv8.exe" ENTERPRISE /S"vrnhd1c-server\lp_sap" /N"lpsap" /P"" "c:\Program Files\1cv82\8.2.13.199\bin\1cv8.exe" ENTERPRISE /S"vrnhd1c-server\lp_sap" /N"lpsap" /P"" |
|||
1
drcrasher
19.12.12
✎
15:37
|
(0) 1) ставить кавычки только там, где надо и 2) start -e комманда - в помощь
|
|||
2
IVT_2009
19.12.12
✎
15:39
|
Вот так вполне работает
БазаФайлов.Свернуть("Имя,Гтд",""); БазаФайлов.Сортировать("Гтд"); ИмяФайла = Константы.ПутьКБат.Получить(); ИмяХранилища = Константы.ПутьКбазеСертификатов.Получить(); ПутьКпрограмме_ = СокрЛп(Константы.ПутьКПрограммеПросмотра.Получить()); КомандаСистемы("del.bat","c:\print"); К = Лев("""",1); Цепочка = ""; WshShell=Новый COMОбъект("Wscript.Shell"); Для ЕЕ = 0 По БазаФайлов.Количество()-1 Цикл Цепочка = "i_view32.exe /multitif=(c:\print\"+СокрЛп(БазаФайлов[ее].Имя)+","+СокрЛп(ИмяХранилища)+СокрЛп(БазаФайлов[ее].Имя) +") /killmesoftly"; WshShell.run("C:\print\IrfanView\"+Цепочка,0,true); КонецЦикла; Сообщить("ОК"); Возврат; Принтер_ = "02"; Для ЕЕ = 0 По БазаФайлов.Количество()-1 Цикл Если БазаФайлов[ее].ГТД = "Да" тогда Принтер_ = "03"; Иначе Принтер_ = "02"; КонецЕсли; Цепочка ="rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt c:\print\"+СокрЛп(БазаФайлов[ее].Имя)+" "+к+Принтер_+к; WshShell.run(Цепочка,0,false); //КомандаСистемы(Цепочка,"C:\WINDOWS\System32\"); КонецЦикла; //Текст.Записать("C:\print\pr.vbs"); КомандаСистемы("del.bat","c:\print"); |
|||
3
IVT_2009
19.12.12
✎
15:41
|
Извиняюсь, это более новый вариант.
Вот так работало: БазаФайлов.Свернуть("Имя",""); ИмяФайла = Константы.ПутьКБат.Получить(); ИмяХранилища = Константы.ПутьКбазеСертификатов.Получить(); К = Лев("""",1); Стр000 = ""; Текст = Новый ТекстовыйДокумент; //Текст.УстановитьТипФайла("cp866"); Текст.Очистить(); Текст.ДобавитьСтроку("@ECHO OFF"); Для Каждого Нс Из БазаФайлов Цикл Стр000 = Стр000+" "+К+СокрЛп(ИмяХранилища)+СокрЛп(Нс.Имя)+К; если СтрДлина(Стр000)>= 170 тогда Текст.ДобавитьСтроку(СокрЛп(Константы.ПутьКПрограммеПросмотра.Получить())+" "+СокрЛП(Константы.СтроковыйПараметрПечати.Получить())+Стр000); Стр000 = ""; КонецЕсли; КонецЦикла; Текст.ДобавитьСтроку(СокрЛп(Константы.ПутьКПрограммеПросмотра.Получить())+" "+СокрЛП(Константы.СтроковыйПараметрПечати.Получить())+Стр000); Текст.ДобавитьСтроку("PAUSE"); ПутьБат =ИмяФайла+Константы.ИмяЬат.Получить(); Текст.Записать(ПутьБат,"cp866"); КомандаСистемы(ИмяФайла,Константы.ИмяЬат.Получить()); |
|||
4
ilkoder
19.12.12
✎
15:42
|
Если имя без пробелов и английскими буквами, то там кавычни не нужны, и добавь в конце " /DisableStartupMessages /RunModeOrdinaryApplication"
|
|||
5
Emilio
19.12.12
✎
21:49
|
(1)1)ковычки по другому расставить не возможно, если где-нибудь убрать ковычку, то будет ошибка. 2)что за команда start? bath команда?
(3) не совсем понял как твои примеры мне могут помочь( (4) где именно имя без пробелов? и куда в конце добавить " /DisableStartupMessages /RunModeOrdinaryApplication"? извините если где-то туплю, просто опыта с 1с еще не так много. |
|||
6
DmiVo
19.12.12
✎
22:16
|
(0) Зачем столько кавычек. Оставь две, одну в начале вторую в конце и запись в батник перестанет быть корявой.
|
|||
7
Emilio
19.12.12
✎
22:24
|
(6) ошибки выходят тогда, пробовал ставить ковычки в начале и в конце - ошибка, а вот так ошибок нет, но батник пишется в файл коряво.
|
|||
8
DmiVo
19.12.12
✎
22:26
|
Путь = "C:\";
ТД = Новый ТекстовыйДокумент; ТД.УстановитьТипФайла(КодировкаТекста.ANSI); ТД.УстановитьТекст("cd |@echo off |taskkill.exe /f /im 1cv8* |ping -15 seconds 0.0.0.1 > nul |c:\Program Files (x86)\1cv82\8.2.13.219\bin\1cv8.exe ENTERPRISE /Svrnhd1c-server\lp_sap /Nlpsap /P |c:\Program Files\1cv82\8.2.13.219\bin\1cv8.exe ENTERPRISE /Svrnhd1c-server\lp_sap /Nlpsap /P |c:\Program Files (x86)\1cv82\8.2.13.199\bin\1cv8.exe ENTERPRISE /Svrnhd1c-server\lp_sap /Nlpsap /P |c:\Program Files\1cv82\8.2.13.199\bin\1cv8.exe ENTERPRISE /Svrnhd1c-server\lp_sap /Nlpsap /P"); ТД.Записать(Путь + "reboot1s.bat"); проверял ошибок нет |
|||
9
Emilio
20.12.12
✎
00:14
|
(8) а батник запустить пробовал? если в пути наименование каталога с пробелом, путь пишется в ковычках. если бы все так просто было бы, ты думаешь я бы здесь писал? потому и прошу помощи...
|
|||
10
Живой Ископаемый
20.12.12
✎
00:19
|
какой каталог с пробелом в серверной базе?
|
|||
11
VasjaIvanov
20.12.12
✎
00:20
|
(9)тебе надо путь сокрашено записать для dos, там без пробелом
Documents and Settings = Docume~1 |
|||
12
VasjaIvanov
20.12.12
✎
00:21
|
c:\Program Files (x86) = c:\Progra~1
|
|||
13
VasjaIvanov
20.12.12
✎
00:22
|
или = c:\Progra~2
смотри сколько папок у тебя таких |
|||
14
Живой Ископаемый
20.12.12
✎
00:25
|
боже, а что это вообще такое, зачем запускать подряд 4 экземпляра ОДНОГО и ТОГО же клиента (при чем зачем-то установленного в два разных каталога) чтобы зайти ими в одну и ту же базу под одним пользователем. какой в этом сакральный смысл?
|
|||
15
Emilio
20.12.12
✎
00:29
|
(14) на ПК пользователей может быть разная версия платформы стоять и ОС пользователей может быть как 32х разрядной, так и 64х разрядной.
(10) каталога с пробелом в серверной базе нет, но есть пробел в адресе клиента. (13) огромное спасибо попробую сделать по твоему совету :) |
|||
16
Живой Ископаемый
20.12.12
✎
00:38
|
2(15) И что? клиент разве бывает 64-битный?
И не лучше ли запускать 1cestart, чтобы уже запускался нужный для базы клиент? Но это конечно от пробелов не избавит, согласен |
|||
17
Emilio
20.12.12
✎
00:51
|
(16) клиент не бывает 64 разрядный, а вот к каталогу program files у 64 разрядных осей добавляется приставочка (x86)
|
|||
18
Живой Ископаемый
20.12.12
✎
01:07
|
ок, я понял смысл, пока это тестовое что-то... в боевых условиях будет что-то одно.
|
|||
19
Emilio
20.12.12
✎
01:13
|
(18) ага :)
|
|||
20
DmiVo
20.12.12
✎
08:37
|
(9)
Это лишь к тому, что посчитай кавычки. УстановитьТекст(<ТекстДляУстановки>) Параметры: <ТекстДляУстановки> (обязательный) Тип: Строка. Текст, помещаемый в текстовый документ. Строка (String) Описание: Значения данного типа содержат строку в формате Unicode произвольной длины. Литералы: Литералы строкового типа представляют собой набор символов заключенных в кавычки. Для задания в строке символа " (кавычка) необходимо записать две кавычки подряд. Кроме того, допускаются "многострочные" строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами: Между фрагментами, представляющими отдельные строки многострочной строки, не должно встречаться никаких символов, за исключением пробелов, переводов строки и строк комментариев. Каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки | (вертикальная черта). В этом варианте комментарии допускаются, если строка начинается с символа комментария т.е. в батник у тебя выводится такт как ты написал в твоей записи пробел это " |
|||
21
DmiVo
20.12.12
✎
08:38
|
+(20) |
|
|||
22
Emilio
21.12.12
✎
20:10
|
(21) огромное спасибо, но в два часа сам пришел к этому, перечитав о литералах. просто голова мутно думала :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |