Автоматическое сохранение информационной базы (Выгрузка информационной базы) средствами 1С

Дата публикации: 07-11-2011 | Автор: MelfisFettel | Рубрика:

Автоматическое сохранение (Выгрузка БД) средствами 1СНедавно задумался, каким образом можно выгрузить информационную базу из 1с не прибегая к программам резервного копирования и прочих сторонних средств. Программ резервного копирования данных 1с написано уже не мало, даже думал написать свою. Сначала была мысль использовать механизм регламентных процедур 1с, но отсутствие навыков программирования под 1С меня остановило. Оказалось все намного проще. Запуск 1с из командной строки с определёнными параметрами позволяет выполнять множество административных функций, в том числе и функции выгрузки конфигурации и базы данных 1с.

Разница между способами запуска для клиент-серверного и файлового вариантов не очень велики:

Файловый вариант:

1
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F"Путь к базе данных" /N"Имя пользователя" /P"Пароль" 
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F"Путь к базе данных" /N"Имя пользователя" /P"Пароль" 

Клиент-серверный вариант:

1
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"OneServer\Buch" /N" Имя пользователя " /P"Пароль" 
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"OneServer\Buch" /N" Имя пользователя " /P"Пароль" 

Иногда нужно указать порт сервера 1с. (На прмер когда у вас стоит несколько серверов. 8.2 и 8.1)

1
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"OneServer:1641\Buch " /N" Имя пользователя" /P"Пароль " 
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"OneServer:1641\Buch " /N" Имя пользователя" /P"Пароль " 

Запуск программы под пользователем и выпопление обработки при открытии:

1
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F "ПУТЬ К ПАПКЕ С БД" /N ПОЛЬЗОВАТЕЛЬ /P ПАРОЛЬ /Execute "C:\\обработка.epf" 
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /F "ПУТЬ К ПАПКЕ С БД" /N ПОЛЬЗОВАТЕЛЬ /P ПАРОЛЬ /Execute "C:\\обработка.epf" 

Варианты параметров типа запуска из командной строки:

CONFIG Запуск 1С Конфигуратор

ENTERPRISE Запуск в режиме 1С:Предприятие

CREATEINFOBASE [/AddInList [<имя ИБ>]] — создание информационной базы ( connect string —
строка, с помощью которой задаются параметры информационной базы. Каждый параметр, представляет собой фрагмент вида <Имя параметра=><Значение>, где Имя параметра — имя параметра, а Значение — его значение.
Фрагменты отделяются друг от друга символами ‘;’.
Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки.

Для создания БД в файловом варианте:
File — каталог информационной базы;
Locale — язык который будет использован при создании информационной базы.

Для создания БД на сервере:
Srvr — имя сервера 1С:Предприятия
Ref — имя информационной базы на сервере
SQLSrvr — имя SQL сервера
SQLDB — имя SQL базы данных
SQLUID — имя пользователя SQL
SQLPwd — пароль пользователя SQL. Если пароль для пользователя SQL не задан, то этот параметр можно не указывать
SQLYOffs — смещение дат, используемое для хранения дат в SQL Server. Может принимать значения 0 или 2000. Данный параметр задавать не обязательно. По умолчанию задается 0
Locale — язык

Для обоих вариантов существуют следующие парметры:
Usr — имя пользователя;
Pwd — пароль
/AddInList — параметр, показывающий, под каким именем добавлять базу в список, если не указан, база не будет добавлена в список. Если не указано имя, используется умолчание (Как при создании ИБ вручную)
Одновременное использование ключей не допускается.

Параметры командной строки для указания параметров запуска:
/@<имя файла> — Считывает параметры из указанного файла

/F<Путь> — путь к каталогу с информационной базой (файловый режим)

/S<Адрес> — путь к информационной базе на сервере 1С:Предприятия (
Имя компьютера, являющемся сервером 1С \ Название базы данных в кластере серверов 1с предприятия)

/N<Имя> -Имя пользователя.

/P<Пароль> — Пароль пользователя. (Если у пользователя нет пароля то можно не указывать этот ключ)

/WA- запрет применения Windows-аутентификации при запуске

/WA+ установка обязательного применения Windows-аутентификации при запуске. Если ключ /WA не указан, то считается, что используется параметр командной строки /WA+

/AU- запрет вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки

/AU+ установка вывода вопроса об обновлении текущей версии 1С:Предприятия с административной установки. Если ключ /AU не указан, то считается, что используется параметр командной строки /AU+

/Out<Имя файла> [-NoT_runcate] — установка файла для вывода служебных сообщений. Если задан ключ –NoT_runcate (через пробел), файл не очищается

/L<Каталог> — указывается каталог локализованных ресурсов интерфейса

/DisableStartupMessages -Подавляет стартовые сообщения типа:
«Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить?»;
«Возможностей Вашего компьютера недостаточно для редактирования справки по конфигурации. Для редактирования справки необходимо установить Microsoft Internet Explorer версии 6.0 или выше.»;
«Возможностей Вашего компьютера недостаточно для редактирования html-документов, в том числе разделов справки. Для редактирования html-документов необходимо установить Microsoft Internet Explorer версии 6.0 или выше. В данном запуске редактирование html-документов будет недоступно.»

/C<текст> - передача параметра в конфигурацию Параметры командной строки пакетного режима конфигуратора:

/DumpIB<Имя файла> — выгрузка информационной базы

/RestoreIB<Имя файла> — загрузка информационной базы

/DumpCfg<имя cf файла> — выгрузка конфигурации в файл

/LoadCfg<имя cf файла> — загрузка конфигурации из файла

/UpdateDBCfg [-WarningsAsErrors] — обновление конфигурации базы данных. Если ключ Warnings¬AsErrors указан (через пробел), то все предупредительные сообщения будут трактоваться как ошибки

/DumpDBCfg<имя cf файла> — сохранение конфигурации базы данных в файл

/RollbackCfg — возврат к конфигурации базы данных

/CheckModules — выполнить синтаксический контроль

/UpdateCfg<имя cf | cfu файла> — обновление конфигурации, находящейся на поддержке

/IBCheckAndRepair [-ReIndex] [-LogIntergrity] [-RecalcTotals] [-IBCompression] [-TestOnly | [-BadRefCreate | -BadRefClear | -BadRefNone]
[-BadDataCreate | -BadDataDelete]
] — выполнить тестирование и исправление информационной базы

ReIndex — переиндексация таблиц

LogIntergrity — проверка целостности Вашей информационной базы

RecalcTotals — пересчет итогов

IBCompression — сжатие таблиц

TestOnly — только тестирование

При наличии ссылок на несуществующие объекты:
BadRefCreate — создавать объекты
BadRefClear — очищать объекты
BadRefNone -не изменять

При частичной потере объектов:
BadDataCreate — создавать объекты
BadDataDelete — удалять объекты

Автоматическое сохранение информационной базы (Выгрузка информационной базы) средствами 1С

Создадим bat файл. На пример на диске C и назовем его dumpbad.bat
Запишем в его следующее:

1
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F"ПУТЬ К ВАШЕЙ БД" /DumpIB "ПУТЬ КУДА ВЫГРУЖАТЬ ИБ\1Cv82.dt"
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F"ПУТЬ К ВАШЕЙ БД" /DumpIB "ПУТЬ КУДА ВЫГРУЖАТЬ ИБ\1Cv82.dt"

Таким образом, мы выгрузим информационную базу. У этого способа есть один очень досадный недостаток. При последующих запусках скрипт будет перезаписывать уже существующий файл, соответственно у вас будет только одна резервная копия. Можно поправить ситуацию исправив bat файл вот так: (Сохранение базы производится на диск C, с текущей датой в имени файла. Обратите внимание на последний параметр: C:/%Today%-1Cv8.dt):

1
2
3
@echo off
set Today=%DATE%
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F"ПУТ К КАТАЛОГУ ВАШЕЙ БАЗЫ ДАННЫХ" /DumpIB "C:/%Today%-1Cv8.dt"
@echo off
set Today=%DATE%
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F"ПУТ К КАТАЛОГУ ВАШЕЙ БАЗЫ ДАННЫХ" /DumpIB "C:/%Today%-1Cv8.dt"

Для серверного варианта все будет выглядеть точно так же за исключением того что мы не будем использовать ключ /F. В место него будет использован ключ /S. (Смотрите описание в начале статьи.) Все что осталось сделать, так это добавить этот bat файл в планировщик задач Windows.

Понравилась статья? Расскажи друзьям:


Комментариев (13)

интересно а в Линуксе(Ubuntu) можно делать подобную выгрузку? Имеется ввиду связка Ubuntu+Postgres+сервер 1C и всё это на одном сервере крутится.
Сейчас бекап делаю средствами СУБД, но хотелось бы и средствами 1С это делать на стороне сервера.

Да, конечно это возможно. Клиент запускается из под Windows при помощи расписания, и информационная база быдет выгружатся в формат 1с.

Используйте вот такую конструкцию. только проверьте расположение ковычек. Мог с ними ошибится. C:\Program Files\1cv82\common\1cestart.exe» ENTERPRISE /S»IP Сервера:1641\ИМЯ БД » /N» Имя пользователя» /P»Пароль /DumpIB «C:/%Today%-1Cv8.dt»

Добрый день. Изучал тут этупроблемку и нашёл, что, видимо, обечатка в описании параметров командной строки 1С. Чтобы файл вывода не затирался параметр должен выглядеть вот так
-NoTruncate
т.е., например
«C:\Program Files\1cv82\common\1cestart.exe» config /S server:1641\82_zup /N Администратор /P zzzz /WA- /Out»c:\Backup\backup.log» -NoTruncate /DumpIB H:\1S_VIGR\82_zup.dt

Вот скипт с postgresql 100% работает на server 2008 r2

Начало:

tskill 2
echo ************************************************************
echo Задаём пути и параметры:
echo ************************************************************
set __1c_path=C:\Program Files (x86)\1cv82\8.2.15.301\bin\1cv8.exe
set __base_name=(имя вашеи базы в 1с ( не в базе SQL) пример: Бугалтерия ИП Пупкин.)
set __base_path=(тут пишем адрес сервера, порт сервера 1с (не sql сервера ) и имя базы SQL Пример: server:1541\BuhIPPUPK
set __username=(Имя того кто может выгружать бызу пример: Администрато)
set __password=( пароль )
set __upload_path=( путь куда сохранять выгрузку. пример: D:\backup 1c)
echo ******************
echo Создаём папку выгрузки, если она не существовала ранее
echo ******************
md «%__upload_path%\%__base_name%»
echo ************************************************************
echo Генерируем выгрузку на текущую дату:
echo ************************************************************
«%__1c_path%» config /Out»%__upload_path%\%__base_name%\%__base_name%.log» /S»%__base_path%» /N»%__username%» /P»%__password%» /DumpIB»%__upload_path%\%__base_name%\%__base_name%-%date%.dt»

set __base_path=(тут пишем адрес сервера, порт сервера 1с (не sql сервера ) и имя базы SQL Пример: server:1541\BuhIPPUPK\

Вопрос: Куда писать IP и как это выглядит вообще

192.168.0.х:1541\BuhIPPUPK\

Для PostrgeSQL я бы использовал все же стандартные средства: pg_dump. http://melfis.ru/резервное-копирование-баз-данных-1с-на-p/

У меня при использовании
«C:\Program Files\1cv82\common\1cestart.exe» DESIGNER /F «d:\1Cv8\Зарплата» N «Администратор» /DumpIB D:\1C_8_копии\Зарплата_%dat%.dt
появляется окно с выбором пользователя и нужно нажать ok. Пароля на базу нет. Как имитировать нажатие на ok.

Откуда у вас такой трафик на melfis.ru ?

А как вы решаете проблему с пользователями, которые на момент создания архива (через планировщик), работают с 1С?

Спасибо. Всё работает.

При использовании
«C:\Program Files\1cv82\common\1cestart.exe» DESIGNER /F «d:\1Cv8\Зарплата» N «Администратор» /P*** /DumpIB D:\1C_8_%dat%.dt
появляется окно с выбором пользователя (пользователь уже выбран), но необходимо ввести пароль и нажать ok.

Обсудить