Порывшись на просторах инета, было принято решение сделать «автосохранялку». Как уже говорилось, «Я ЛЕНИВЫЙ», поэтому мне было попросту лень ставить всякие утилиты и программки, реализовал все штатными средствами.
Прилагаю два файла
1. save.cmd
а) завершает все процессы 1С у всех пользователей терминала, запускает конфигуратор 1С 7.7 в пакетном режиме с параметрами
б) определяет текущую дату
в) копирует сохраненный архив (Arh.zip) в нужную мне папку (в ней у меня хранятся все дампы), это D:Arhiv2024
г) перейменовывает файл архива с «Arh.zip» в чтото вроде этого «2024-11-30-AS_2024.zip»
д) удаляет «Arh.zip» с текущей папки
Содержимое файла:
taskkill /im 1cv7.exe* /f
start /W /D «C:Program Files1Cv77BIN» 1cv7.exe config /D «D:1s2024» /NUser /PPassword /@D:Autosavearc.prm
@echo off
:: Code by Herbert Kleebauer
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>d_t.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>d_t.com
echo LisqMz`wGH@wKuur`G@w?ogBgGG}G?j_egoNOG?w?`gBLksqgG`w?WgBgG>>d_t.com
echo G}G?R_MgoNMy?wSx@W?s?W?@zAB`LrFuBLyt~vuco{@LuKooD?BFHqrIcP>>d_t.com
echo _sdDxb1T??=?rILO_sdDqx1T??=?rILO_sdDnl1T??=?rILO_sdD`c1T??>>d_t.com
echo =?rILO_sdDgg1T??=?rILO_sdDll1T??=?rILO_sdDrr1T??=??IL?0xxx>>d_t.com
FOR /F «delims=» %%i IN (‘d_t.com’) DO %%i
del d_t.com
echo century: %_cy%
echo year: %_yr%
echo month: %_mo%
echo day: %_da%
echo hour: %_hh%
echo minute: %_mm%
echo second: %_ss%
echo all: %_cy%%_yr%-%_mo%-%_da% %_hh%:%_mm%:%_ss%
echo.
echo %DATE% %TIME%
copy D:Autosavearc.zip D:Arhiv2024arc.zip
del D:Autosavearc.zip
rename «D:Arhiv2024arc.zip» %_cy%%_yr%-%_mo%-%_da%-AS_2024.zip
2. arc.prm — файл параметров конфигуратора в пакетном режиме. Там указано, что нужно сделать сохранение базы, сделать переиндексацию и закрыть конфигуратор, можно добавить любые пункты из меню «Тестирование и исправление БД». также в этом файле прописано в какую папку сохранится файл архива и как он будет называться (у меня это D:AutosaveArc.zip), собственно в этой же папке хранится и первый файл.
Содержимое файла:
; — Комментарий т.е. любой текст не обрабатывается программой 1С
;заглавные общие параметры
[General]
;Имя файла с отчетом
Output= D:AutosaveArc.txt
Quit=1 ; Закрывать 1С после выполнения задания
CheckAndRepair=1 ; Выполнять тестирование и исправление БД
UnloadData=0 ; Делать выгрузку данных (НЕ автообмен, а первую выгрузку!!!)
SaveData= 1 ; Делать архив БД
AutoExchange=0 ; Делать автообмен
;параметры тестирования и восстановления
[CheckAndRepair]
Repair=0 ; соответствуют галочкам в диалоговом окне при выборе
PhysicalIntegrity=0 ; в конфигураторе «Тестирования и исправления БД
Reindex=1
Logicalintegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0
;SkipUnresolved=
;CreatForUnresolved=
;Reconstruct=
;параметры выгрузки данных
;[UnloadData] ; Рекомендую не использовать
;UnloadToFile=
;IncludeUserDef=
;Password=
;параметры сохранения данных в архиве
[SaveData] ; Имя файла для сохранения архива БД
; Имя файла архива
SaveToFile= D:AutosaveArc.zip
;FileList= ; Имя файла со списком файлов для архивации
;описание параметров для работы с РИБ
[AutoExchange]
SharedMode=1 ; Выполнять автообмен в случае, если в БД кто-то сидит
;ReceiveFrom=* ; В случае автообмена посредством e-mail — адрес отправителя
ReadFrom=* ; Оставить путь к файлу для загрузки по умолчанию. Иначе — вписать нужный путь
WriteTo=* ; Аналогично для выгрузки
;SendTo=*
P.S. запускать первый файл желательно от имени администратора в нужное время. Можно кинуть в назначение заданий сервера.
Все замечания и предложения по функционалу приветствуются.
Есть нюанс. d_t.com который создается при выполнении скрипта является 16-разрядным приложением и не сможет работать на х64 ОС.
(1) %date%тебе в помощь, возвращает тек.дату в cmd
Перебори свою лень 1 раз и настрой все нормально
(2) Так мне и не надо, это у тебя же в батнике начиная отсюда «:: Code by Herbert Kleebauer» создается com-файл. Только работать будет не везде. Поэтому нужно в описании разработки предупредить что «не работает на X64»
(3) для нашего сервачка-старичка этого вполне хватает.
А вообще вариантов бекапов масса, и каждый выбирает для себя и под свои нужды, материал выставлен в ознакомительных целях, Архивирование проходит без проблем и на х32 и на х64, а уж что делать с архивом это уже личное дело каждого, как его назвать, куда его положить и что с ним делать дальше
(6)
Согласен. По нынешним меркам объемы баз 7.7 настолько невелики, что на выбор архиватора и способа архивации стоит тратить время только при количестве баз от 10.
Думаю, вместо
лучше будет
или
В своей практике в начале батника обычно прописываю все пути и некоторые параметры в переменные через SET. Это чтобы не искать их потом по всему коду и не тратить время на «найти-заменить».
(7) по поводу переменных — дельное предложение, весьма упростит некоторые моменты
Собственно, сейчас у большинства архиваторов есть ключи типа «добавить дату к имени архива», но было интересно решить задачу получения даты-времени средствами bat-языка.