Имя: Пароль:
1C
1С v8
Архивация баз 1С 8.2 с помощью .bat файла
0 skupidom
 
18.10.16
13:15
Есть sql серверная база 1С 8.2, написали скрипт в файле .bat:
chcp 1251
echo off
setlocal
set kat=C:\Program Files (x86)
set ver=1cv82
set serv=server-1c
set base=ArchBp1
"%kat%\%ver%\8.2.19.83\bin\1cv8.exe" CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB "C:\Arch1C\1c82_%date%.dt"
/N Admin /P /OUT "C:\Arch1C\Logs\ backup.log" -NoTruncate
echo %date% >> backup.log
endlocal
Цель - создание архивных копий базы 1С
Результат скрипта: 1С запускается, доходит до момента аутентификации (выбора пользователя 1С) и пароля, далее пока сам не введешь пользователя+пароль не отрабатывает и резервную копию базы 1С не делает
1 Волшебник
 
модератор
18.10.16
13:17
убери пробел после /N
2 skupidom
 
18.10.16
13:23
убрал, запустил скрипт, не заходит, хоть Admin без пароля
3 Fish
 
18.10.16
13:26
(0) Если база скульная, то и архивацию надо делать средствами скуля. Зачем батники, когда в скуле уже всё и так есть?
4 ptiz
 
18.10.16
13:28
Ну и традиционно: dt - не архив.
5 MrStomak
 
18.10.16
13:38
(0) Ага. Только тебе еще скрипт по отключению всех пользователей из базы нужно написать. И вообще - много проблем может быть, если по принципиальным соображениям не использовать для бэкапов механизмы СУБД.
6 skupidom
 
18.10.16
13:38
я понимаю, это временное решение, а как все таки .bat заставить работать корректно?
7 MrStomak
 
18.10.16
13:42
(6) Ну попробуй /P убрать
8 Fish
 
18.10.16
13:43
(6) Попробуй введи пароль. Может, там надо указать пустой пароль кавычками. Как-то никогда не практиковал учётку админа без пароля.
9 cons74
 
18.10.16
13:44
по bat есть специальная ветка на профильном форуме http://www.cyberforum.ru/cmd-bat/
10 skupidom
 
18.10.16
14:05
как обойти ввод пароля?
11 mistеr
 
18.10.16
14:09
(10) Да поставь уже Effector-Saver.
12 newbling
 
18.10.16
14:37
А база файловая или скульная?
13 Fish
 
18.10.16
14:38
(12) в (0) написано. В первой же фразе :)
14 newbling
 
18.10.16
14:49
(13) как-то упустил из виду. Тогда вообще некорректно так делать архивы. Надо средствами скуля. Например, я недавно делал в ветке pg_dump + текущая дата на windows server 2012

Там вообще больше про время, но я привёл полностью рабочий код батника для копирования базы средствами скуля.

Есть, правда, момент с настройкой пользователей, но до этог оещё дойти надо.
15 pessimist
 
18.10.16
17:32
(0) Проблему с паролем можно решить используя учётную запись с паролем и необходимыми правами.
Можно попробовать что-то типа
"%path_to_1c%"\1cv8.exe DESIGNER /N %login% /p %password%
оно у меня работает из скрипта, правда платформа 8.3

Если всё-таки делать бэкап в dt то нужно как минимум анализировать %ERRORLEVEL% в скрипте, перезапуская бэкап в случае неудачного завершения и писать  в лог не только %date% но и %ERRORLEVEL%  и по возможности полностью выдачу команды для последующего разбора полётов. Лучше пытаться выгнать пользователей и запретить регламентные задания. Костыль конечно, но шансов больше.

При наличии выбора не нужно делать бэкап в dt. Даже если пытаться скриптом выгнать пользователей, запретить регламентные задания и анализировать %ERRORLEVEL% есть шанс что этот зоопарк не сработает. Бэкап средствами SQL сервера надёжнее.
16 Fedor-1971
 
18.10.16
18:34
(0)
set serv=server-1c
set base=ArchBp1
.... /S %serv%\%base% ... = /S server-1c\ArchBp1 - как бы \\ не хватает, что-бы получился корректный путь
17 Fedor-1971
 
18.10.16
18:35
16+ в CMD запусти и посмотри как раскрываются твои строки, может ещё чего упустил
18 Мойдодыр
 
18.10.16
18:37
(15) Главное сделать. Прверять не обязательно )))
19 Alexor
 
18.10.16
20:40
У меня такой cmd файл архив делает дополнительно к скульному

set folder=%DATE%
"C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe" config /sServSQL\Trade /nUser /pPassword /DumpIB "E:\ARHIV\trade_%folder%.dt"
20 NorthWind
 
18.10.16
21:44
(0) Делал когда-то примерно так, правда, на VBS

Const kpgDumpPath     = """C:\Program Files (x86)\1cv82\common\1cestart.exe"""
Const kDatabaseServer = "srv-02\server"
Const kDestPath       = "E:\1C_ArcDT"

Sub Main

    Set Cmd = CreateObject("WScript.Shell")
        FileName = kDestPath & "\arc" & Day (Date ())
    BakFileName = FileName & ".dt"

        Set FS = CreateObject ("Scripting.FileSystemObject")
    if FS.FileExists (BakFileName) then
         FS.DeleteFile BakFileName
    end if                            

        rem делаем резервную копию базы

    StrCmd = kpgDumpPath &_
     " CONFIG /S" + kDatabaseServer + " /DumpIB" & BakFileName  & " /NЛогинДляСервиса /Psrvc1234"

        Cmd.Run StrCmd, 1, true

End Sub
'-------------------------------------------------------------------
Main