Имя: Пароль:
   
1C
 
Запуск 1С в пекетном режиме через планировщик
0 vcv
 
04.06.04
10:57
Есть два батничка на одном сервере с запуском 1С в пакетном режиме. Один для ночной проверки/загрузки/выгрузки в монопольном режиме, другой, для ежечасной загрузки/выгрузки УРБД. Оба, если просто запустить из, например, ФАРА или проводника, успешно отрабатывают. Если-же запускать через планировщий (стандартный Windows2000Server), с первым батником все нормально, а из второго 1С не запускается, возвращая errorlevel 128.
Что это может быть?
Где-нибудь можно раздобыть информацию о 1Сных errorlevel?
Ключ и сетевой менеджер стоят на этом-же сервере.
1 lexa
 
04.06.04
10:59
приведи батник и файл параметров, у меня автообмен запускается каждые полчаса  без проблем
2 vcv
 
04.06.04
13:01
[General]
Output=C:\backups\AutoExchange.~mlg
Quit=1
CheckAndRepair=0
UnloadData=0
SaveData=0
AutoExchange=1
[AutoExchange]
SharedMode=Yes
ReceiveFrom=
ReadFrom=*
WriteTo=*
SendTo=

Батничек приводить не буду, там много лишнего, только глаза будет путать, но и просто такая строчка в планировщике не пускается:
"C:\Program Files\1Cv77\BIN\1cv7.exe" config /D"C:\Baza.1C\МПК 2004\" /NАдминистратор /@C:\backups\AutoExchange.prm

Ту же строчку запуска скармливаю "Пуск / Выполнить" - все идеально.
3 Killgur
 
04.06.04
13:26
В задании обязательно укажи пользователя от чьего имени будет запускаться задание и введи его пароль (задать пароль)
4 lexa
 
04.06.04
13:36
переименовал бы ты МПК 2004 в МПК_2004 и убрал бы кавычки и
Output=C:\backups\AutoExchange.~mlg сделай попроще например
Output=C:\backups\AutoEx.mlg
я как то в Output неправильно путь прописал так конфигуратор вообще зависал
попробуй
cd "C:\Program Files\1Cv77\BIN\"
start 1cv7.exe" config /DC:\Baza.1C\МПК_2004\ /NАдминистратор /@C:\backups\AutoExchange.prm
5 vcv
 
07.06.04
08:17
Не помогает. Самое что интересное, рядом второй батник, который запускается ночью для проверки базы и загрузки/выгрузки в монопольном режиме. Так он запускается. И от *.prm файла это не зависит, пробовал подменять. Какой-то глюк с неустоячивым запуском.
Тот батник, из которого 1С-ка не запускается так и висит на регулярном запуске каждый час и по логам где-то раз в день, он таки умудряется запуститься.
6 427
 
07.06.04
08:25
запусти первый раз батник руками... И ответь на все сообщения - которые вываливаются... Типа там всяких подсказок ежедневных...

Она не висит - просто ждет ответа...
7 lexa
 
07.06.04
10:29
(2) попробуй упростить батничек до (4) и (3) прав на задание надо прописать пароль пользователя . Вообще если ОС 2000/ХР, то не .bat, а .cmd. И приведи все-таки батничек. Я сам долгл геморроился с батником: надо было обмен через дискету сделать, а уриб на ЦБ не дает это сделать. Пришломь, проверять наличе файлов, переписывать с дискеты на винт, а после обмена с винта на дискету
8 vcv
 
07.06.04
13:43
To 427: "Висит на регулярном запуске" не в смысле 1С запускается и висит, а в смысле запуск указан в шедулере. Сама 1С пытается запуститься и мгновенно завершается с кодом возврата (errorlevel) 128.

To lexa:
Упрощение батничка эффекта не дает. Пароль на задание есть. Как же без него на корпоративном серваке?
А батничек.... Ну ты сам попросил.... :-) :-)

Сначала первый, который запускается раз в день ночью и нормально отрабатывает:

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set TS=%date:~9,4%%date:~6,2%%date:~3,2%
set RAR=rar.exe a -m5 -av- -idp -k -mdG -y -dh
set ONEC="C:\Program Files\1Cv77\BIN\1cv7.exe" config /M

echo.>>%~dpn0.log
echo ------------------------------------------------------------------------------->>%~dpn0.log
echo %TS% %TIME% Обслуживание ИБ 1С>>%~dpn0.log

rem ***
rem *** Архивирование информационных баз
rem ***
pushd C:\Baza.1C
for /F "tokens=*" %%i in ('dir /b /s *.md ^| findstr /V "NEW_STRU"') do (
   if not exist "%~dp0%%~pi" mkdir "%~dp0%%~pi"
   echo %TS% Архивирование ИБ %%~dpi>>%~dpn0.log
   pushd "%%~dpi"
   %RAR% -ilog"%~dp0%%~pi%TS%.log" "%~dp0%%~pi%TS%.tmp" @%~dpn0.lst
   if exist "%~dp0%%~pi%TS%.log" (
       echo %TS% : Протокол ошибок в файле %~dp0%%~pi%TS%.log>>%~dpn0.log
   )
   popd
   pushd "%~dp0%%~pi"
   if exist %TS%.tmp (
       for /F %%i in ('%~dp0cksum.exe %TS%.tmp') do set sum1=%%i
       for /F %%i in ('dir /OD /B *.rar 2^>nul') do set oldname=%%i
       for /F %%i in ('%~dp0cksum.exe !oldname!') do set sum2=%%i
       if "!sum1!"=="!sum2!" (
           echo %TS% : Изменений в ИБ не обнаружено, архив не сохранен>>%~dpn0.log
           del %TS%.tmp
       )
   )
   if exist %TS%.tmp move %TS%.tmp %TS%.rar
   popd
)
popd


rem ***
rem *** Тестирование и автообмен ИБ
rem ***
echo %TS% Тестирование и автообмен ИБ C:\1C\МПК2004\>>%~dpn0.log
del "%BASE%\Exchange\CP\" /Y 2>nul
del "%BASE%\Exchange\PC\" /Y 2>nul
if exist C:\Home\Exchange\U~2C.ZIP move /Y C:\Home\Exchange\U~2C.ZIP "%BASE%\Exchange\CP"
%ONEC% /D"C:\Baza.1C\МПК 2004\" /NАдминистратор /@%~dpn0.prm
if exist %~dpn0.~mlg (
   type %~dpn0.~mlg>>%~dpn0.mlg
   %~dp0recode.exe -wd %~dpn0.~mlg
   findstr "Err" %~dpn0.~mlg>>%~dpn0.log
   del %~dpn0.~mlg
)
move /Y "%BASE%\Exchange\PC\U~?D.ZIP" C:\Home\Exchange >nul

endlocal

и пакетный файл к нему:

[General]
Output=C:\backups\maintenance.~mlg
Quit=1
CheckAndRepair=1
UnloadData=0
SaveData=0
AutoExchange=1

[CheckAndRepair]
Repair=0
PhysicalIntegrity=1
Reindex=1
LogicalIntegrity=1
RecalcSecondaries=1
RecalcTotals=1
Pack=0

[AutoExchange]
SharedMode=No
ReceiveFrom=
ReadFrom=*
WriteTo=*
SendTo=


Второй батничек, который не работает, гораздо проще, он только выгружает данные, забираются они по FTP с другого сервера

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

pushd %~dp0
set ONEC="C:\Program Files\1Cv77\BIN\1cv7.exe" config
set BASE=C:\Baza.1C\МПК 2004
set TS=%date:~9,4%%date:~6,2%%date:~3,2% %time:~0,5%
echo %TS% Автообмен ИБ %BASE%>>%~dpn0.log
del "%BASE%\Exchange\CP\" /Y 2>nul
del "%BASE%\Exchange\PC\" /Y 2>nul
if exist C:\Home\Exchange\U~2C.ZIP move /Y C:\Home\Exchange\U~2C.ZIP "%BASE%\Exchange\CP"

rem %ONEC% /D"%BASE%\" /NАдминистратор /@%~dpn0.prm
cd "C:\Program Files\1Cv77\BIN\"
%ONEC% /D"C:\Baza.1C\МПК 2004\" /NАдминистратор /@%~dpn0.prm
if not %errorlevel%==0 echo %TS% Запуск 1С не удался >>%~dpn0.log

del "%BASE%\Exchange\CP\" /Y 2>nul
if exist %~dpn0.~mlg (
   type %~dpn0.~mlg>>%~dpn0.mlg
   %~dp0recode.exe -wd %~dpn0.~mlg >nul
   findstr "Err" %~dpn0.~mlg>>%~dpn0.log
   del %~dpn0.~mlg
)
move /Y "%BASE%\Exchange\PC\U~2D.ZIP" C:\Home\Exchange 2>nul
popd
endlocal

и пакетный файл к нему:

[General]
Output=C:\backups\AutoExchange.~mlg
Quit=1
CheckAndRepair=0
UnloadData=0
SaveData=0
AutoExchange=1

[AutoExchange]
SharedMode=Yes
ReceiveFrom=
ReadFrom=*
WriteTo=*
SendTo=


Кстати, если кому-то мои батнички приглянутся - берите на здоровье. :-) :-)
9 lexa
 
07.06.04
13:47
cd "C:\Program Files\1Cv77\BIN\"
start /wait %ONEC% /D"C:\Baza.1C\МПК 2004\" /NАдминистратор /@%~dpn0.prm
10 vcv
 
07.06.04
14:48
Нулевой эффект :-(
Может дело в хаспе? Когда пускаю с с командной строки или из фара 1Ска еще секунды две ищет хасп. А при запуске через шедул задача завершается мгновенно. Обновление дров хаспа тоже не помогло.
11 Akim
 
07.06.04
15:08
У меня была подобная проблема с пакетным режимом . Победил тем что исключил кирилицу в паролях и именах юзеров (ну не любит 1С русских  ^:)) ). И все пути в формат 8.3. Попробуй.
12 Akim
 
07.06.04
15:09
ЗЫЖ И каталоги тоже по английски. :-)
13 lexa
 
07.06.04
15:11
Да, батники у тебя навороченные, даже завидно
У меня все просто:
@echo off
cd "g:\Program Files\1Cv77\BIN\"
start /min 1cv7.exe CONFIG /DD:\1C\db /NAutoExchange /P132 /@D:\1C\CMD\Autoexchange.txt
а Autoexchange.txt :
[General]
Output=d:\1C\CMD\Log.txt
Quit=Y
AutoExchange=Y
[AutoExchange]
SharedMode=Y
ReceiveFrom=*
ReadFrom=*
WriteTo=*
SendTo=*
все работает без геморроя (через e-mail)
14 lexa
 
07.06.04
15:20
ты перезаписываешь файлы автообмена и не дожидаясь завершения перезаписи запускаешь конфигуратор, а потом недожидаясь завершения его работы опять перезаписываешь файлы, я тут заморачивался с автообменом через дискету и делал примерно так:
xcopy /wait a:\db21.zip c:\cmd\*
cd "g:\Program Files\1Cv77\BIN\"
start /wait 1cv7.exe CONFIG /DD:\1C\db /NAutoExchange /P132 /@D:\1C\CMD\Autoexchange.txt
xcopy c:\cmd\db20.zip a:\*
15 vcv
 
07.06.04
15:21
Вопрос кажется решен. Как только юзера ушли домой батник сразу заработал. По предварительным экспериментам, что бы все заработало, надо для пользователя, от которого пускается 1С в пакетном режиме задать свой личный каталог. С пустым каталогом не прокатывает. Точно проверю завтра, когда юзера опять на базу насядут. Непонятно только кочему это важно при запуске из шедула и безразлично при запуске батника вручную.
16 lexa
 
07.06.04
15:27
(15) у меня, когда автобмен франч настраивал тоже пользователь, под которым производился автообмен был без каталога, мне эта дискриминация не понравилась и я ему сам прописал
если SharedMode=Y , то как без личного каталога?
17 vcv
 
08.06.04
09:01
(14) Консольные команды не умеют работать в асинхронном режиме. И у XCOPY ключа WAIT нет. Ты случаем с каким-нибудь новелем не перепутал? Единственный, кажется, способ устроить асинхронное выполнение батничка, это команда start /B.

(15) Вопрос этим не решился, но несколько прояснился при экспериментах.
Корень проблемы оказался в том, что из-за бедности одного нашего участка, сервер там используется как рабочая станция и проблема с запуском начинается, когда на сервере уже запущена 1с от пользователя. К сожалению избавиться от этой проблемы (в смысле пользователя) нельзя, поэтому придется искать решение.
Дальше пошли странности. Описываю ситуацию: удаленный сервак вынь2К, к которому я подключаюсь штатным терминалом администратором (ADMIN). На серваке сидит пользователь (USER) с запущенной 1С. Если я запускаю свой батничек в своей терминальной сессии (от пользователя ADMIN), он нормально работает. Если, же запускаю задание в шедуле от того-же пользователя (ADMIN), 1С не запускается. Если запускаю задание от имени пользователя (USER), 1С нормально запускается, но не может записать выходной файл УРБД не смотря на полные права на каталог ИБ, в подкаталог которого делается выгрузка (бардака с правами нет, права на подкаталог пользователю тоже полные).
Фууууу... Ну и проблемы на ровном месте....
Но, кажется, все решилось. Батник упростил, запуск сделал от пользователя (USER), каталоги загрузки-выгрузки подобрал, что бы ошибка "нет доступа" не возникала, батник.
18 lexa
 
08.06.04
11:24
(17) насчет xcopy /wait a:\db21.zip c:\cmd\* наверное ошибся ( сегодня с утра был, но не посмотрел) , а насчет юзеров это точно, у меня в одной точке, автообмен происходит на машине, где попеременно работают разные юзеры, и шедулер от админа не запускается, самое смешное, что когда я создал вначале для одного юзера с его паролем, а потом вошел под другим и стал создавать новое задание с тем же именем, то был послан - задание с таким именем уже есть.
Я сам хотел через ftp сделать, но руки не дошли. Все работает через e-mail. Проблема одна, если у почтового клиента ошибка, то конфигуратор зависает. Кстати может тебе твой батник разбить на 2. Первый будет получать файлы и запускатся за 5 минут до второго, а второй запускать автообмен и отсылать файлы. Но start /wait точно нужен для корректной работы.
19 Пока никто
 
03.11.04
02:17
Если вы используете юзера для пакетного задания, например, Попов_Андрей а не Popov_Andrey, не забудьте перекодировать свой .bat файл в ASCII кодировку, иначе DOS не поймёт :)