Скрипты для работы 1С:Предприятие из командной строки
Иногда возникает задача в нерабочее время произвести выгрузку информационной базы 1С:Предприятие. Для её достижения необходимо производить запуск 1cv8.exe с ключами из командной строки. В данной заметке приведу пример такого использования. |
Существует большое количество параметров для запуска 1С из командной строки. С их значениями и некоторыми примерами вы можете познакомиться в статье Виктории Коршановой на сайте infostart.ru. Ниже приведены два примера, используемых мной лично.
В первом примере осуществляется автоматическая выгрузка из базы 1С в папку для бекапов с логированием процесса:
@
set dt=%date%@
set claster=SERVER:PORT@
set namebase=BASE@
set username=ADMIN@
set userpass=PASSWD@
set folder=G:\BACKUP "C:\Program Files (x86)\1cv8\8.3.7.1860\bin\1cv8.exe" CONFIG /S "%claster%\%namebase%" /DisableStartupMessages /N"%username%" /P"%userpass%" /DumpIB"%folder%\%namebase%_%dt%.dt" /OUT"%folder%\%namebase%_%dt%.log" -NoTruncate
где:
- SERVER:PORT — сервер 1С и порт (если кластер работает на отличном от 1541);
- BASE — имя базы данных;
- ADMIN — имя пользователя с полными правами на указанную базу;
- PASSWD — пароль указанного пользователя;
- G:\BACKUP — папка для хранения выгрузок и логов;
- /DumpIB — параметр для выгрузки указанной далее информационной базы;
- /Out[ -NoTruncate] — файл лога.
Следующий пример используется для работы с самой базой данных:
"C:\Program Files (x86)\1cv8\8.3.7.1860\bin\1cv8.exe" CONFIG /S "%claster%\%namebase%" /DisableStartupMessages /N"%username%" /P"%userpass%" /IBcheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -IBCompression -Rebuild -BadRefClear -BadDataCreate /OUT"%folder%\%namebase%-TI_%dt%.log" -NoTruncate
где (поясняются недостающие ключи):
/IBcheckAndRepair — выполняется тестирование и исправление информационной базы:
- -ReIndex — реиндексация таблиц;
- -LogAndRefsIntegrity — проверка логической и ссылочной целостности;
- -RecalcTotals — пересчет итогов;
- -IBCompression — сжатие таблиц;
- -Rebuild — реструктуризация таблиц информационной базы;
- -BadRefClear — создавать объекты при наличии ссылок на несуществующие объекты;
- -BadDataCreate — создавать объекты при частичной потере объектов.
Далее остаётся только создать задачу на основе полученного cmd-файла и выполнить её по расписанию.
P.S. советую прочитать комментарии к указанной по ссылке выше статье. можно столкнуться с некоторыми трудностями и ошибками при написании своих скриптов. Например – показателен комментарий за номером 101:
Заметил одну особенность – загружаем конфигурацию без мучения пользователей:
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F" C:\Users\*****\Documents\InfoBase2" /LoadCfg "C:\Users\******08042013.cf" /N"Админ" /P"123"
Причем запускаем на сервере и тут ошибаемся в пароле “123”, в это время на сервере запускается окно с предложением указания пользователя. На сервере! и все, конфигуратор занят и без админа/программиста пользователь не может ничего сделать.
Будьте внимательны!
P.P.S. для выполнения операций над несколькими базами будет полезен следующий скрипт:
@
echo off
set bases=Your_base1 Your_base2 ...
FOR %%G IN (%bases%) do call :Update %%G
goto :end
:Update
set CFUpath=D:\Distr\1c\3_0_71_1\1cv8.cfu
set serv=Your_server
set put="C:\Program Files\1cv8\8.3.9.1850\bin\1cv8.exe" CONFIG /S %serv%\%1 /DisableStartupMessages /UpdateCfg %CFUpath% /UpdateDBCfg /out 1.txt
echo %1
start "" /b /wait %put%
exit /b 0
:end
Где в переменную bases заносится список баз на сервере через пробел. В секции :Update в переменной put можно прописать любую требуемую процедуру.