Выгрузка базы из 1С (*.bat)

Внимание !
Фирма 1С рекомендует делать резервные копии для:
1. файловой версии БД — копирование файла 1Cv8.1CD
2. серверной БД — средствами используемого SQL-сервера.

Итак, для 1Сv8:

Создаём *.bat файл с вашим названием, и загоняем приблизительно такой текст:

cd ″C:\Program Files (x86)\1cv8\common″
start 1cestart.exe CONFIG /F D:\1C\IN /NRobot /Ppass /DumpIB R:\IN\kino_i_nemcy.dt

Далее, в зависимости от версии вашей операционной системы, и версии программы подставляем свои пути:

C:\Program Files (x86) — зависит от разрядности системы

1cv8 — от версии установленной программы 1С

common — если нет желания каждый раз править скрипт после обновления дистрибутива 1С (если же есть такое желание, можно прописать пути до конкретных версий например:
C:\Program Files (x86)\1cv8\8.3.5.1186\bin\1cv8.exe″ )

CONFIG — запуск в режиме конфигуратора

/F D:\1C\IN — файловая версия и путь до базы

(/S serv_1C\base_1C — SQL-версия и путь к ней (сервер\база)

/NRobot — имя пользователя «Robot»

/Ppass — пароль «pass» (если пользователь без пароля — не пишем этот параметр вообще — т.е. /P — не нужен)

/DumpIB — команда выгрузить ИБ

R:\IN\ — путь куда выгружаем

kino_i_nemcy.dt — как обзываем файл выгрузки (можно вставить %date%)

Пробуем запускать при открытом диспетчере задач (вы не увидите запуска программы на рабочем столе), по завершении процесса 1cv8.ехе — смотрим в папку выгрузки, если есть наш файл — лучше всего проверить — это создать новую базу, и  загрузить в неё наш *.dt-файл. Если после этого новая база запускается и работает без проблем — можете пускать в работу ваш скрипт.

Для своей базы написал следующее (предварительно выгнав пользователей):

CHANGE LOGON /DISABLE — запрещаем новые терминальные подключения
timeout /t 2
start C:\Progra~2\1cv8\common\1cestart.exe CONFIG /S SERV_1C\TSQL /NRobot /DumpIB \\COMP\D$\ARH\1Cv8_%DATE:~0,2%_%DATE:~3,2%_%DATE:~8,2%g.dt — Robot у меня без пароля, COMP — любой компьютер с прямым доступом админу, название файла будет вроде такого: 1Cv8_21_02_19g.dt
timeout /t 2
:wait — тут ожидаем когда закончится выгрузка
TASKLIST | find ″1cv8.exe″ >nul
if %errorlevel%==0 goto wait
timeout /t 2
CHANGE LOGON /ENABLE — разрешить подключения


Забыл написать про грабли на серверах 2008R2 и выше (сам же на них снова натктнулся) — запуск файла bat/cmd отрабатывает как надо, а через планировщик не работает:

Добавив в задания данный bat/cmd-файл и попробовав запустить — получаем висящий в диспетчере задач cmd.exe, но реально ни чего не происходит, т.е. 1cv8.exe не запускается, соответственно выгрузки тоже нет.

Решение:

Входим под локальным администратором, меняем в файле пути вида ″C:\Program Files (x86)\1cv…..″  на ″C:\Progra~2\1cv….″ , т.е. убираем таким образом все пробелы в путях…

Если есть запуск цепной реакции (вызовы других скриптов из этого файла) — прописываем каждый вызов вышеуказанным способом, т.е — с полными путями.

Запускаем cmd от админа, переходим cd C:\WINDOWS\SYSTEM32, копируем строку запуска из планировщика задач в cmd и пробуем запустить, если что-то не так — исправляем до получения однородной массы желаемого результата.

Рекомендации:

При копировании кода с сайта замените кавычки на стандартные !!!

Все пути, имена, пароли желательно, во избежание проблем — латиницей!

Заметил один косяк — если установлено много версий программы — может произойти откат на предыдущую версию конфигурации.. — рекомендую убрать (удалить версии не совместимые с данной конфигурацией) или же переписывать скрипт для последней версии программы, после каждой установки …

2 мысли о “Выгрузка базы из 1С (*.bat)”

Добавить комментарий

Ваш e-mail не будет опубликован.