ЭТО СТАТЬЯ ЕСТЬ в АРХИВЕ
Архив баз 1С8 — это очень просто!?
Введение
Создать архив баз данных в 1С7.7 было очень просто с помощью программки LockAndCopy Алексея Калядина из ООО «Активные Торговые Технологии» г. Москва. В 1С8 этот фокус не проходит: нет DBF-файлов, поэтому нужно пользоваться для создания архива командой:
"C:Program Files1cv82\%Bep1C%in1cv8.exe" DESIGNER
/SSERVER1Src
/NАДМИН /P7913
/DumpIBDump.dt
/Visible
где SERVER1 – имя кластера серверов 1С:Предприятие 8,
Src - имя информационной базы в кластере,
АДМИН - пользователь 1С8 с правами администратора базы
7913 - его пароль для доступа базе 1С
Dump.dt - файл с архивом базы 1С с сервера,
А для записи локальной копии базы на Ваш ПК из файла Dump.dt следующей командой:
"C:Program Files1cv82\%Bep1C%in1cv8.exe" DESIGNER
/FDest
/NАДМИН /P7913
/RestoreIBDump.dt
/Visible
где Dest - имя папки локальной копией информационной базы на ПК,
АДМИН - пользователь 1С8 с правами администратора базы
7913 - его пароль для доступа базе 1С
Dump.dt - файл с архивом базы 1С с сервера,
Эти две команды — ОСНОВА пакета cmd-файлом для создания архивов баз данных (см.файл Save_C8.cmd )
Настройка пакета Save_C8.cmd
После сохранения пакета на Ваш ПК его нужно разархивировать в любую папку. У нас это папка
C:MyDocs1CПРАВКА\_АРХИВ_
Затем открываем файл Save_C8.cmd и находите следующие две строки
SET APXIB=\SERVER1Install1CФирма 1С1С 8.2АРХИВ
SET Bep1C=8.2.16.352
В первой строке после символа «=» указываем путь к папке архиву на сервере. В этой папке будем хранить последнюю копию архива. А во второй – номер версии из названия папки с 1С8 (Смотри Рис. 1)
Поясним наши действия на этом рисунке:
- Запускаем из меню «Пуск» в режиме «Запуск программы» CMD
- Переходим к папке C:Program Files1cv82 командой (1)
- Набираем Dir (2) и смотрим (3)
- Записали (3) и набрали Exit
PS. Это один из способов определить нужный нам номер версии. Есть куча других, но указал этот – работает всегда и везде.
Рис. 1
Если у Вас НЕ на всех машинах, где будет использоваться этот пакет, ЕСТЬ диск D:, то заменить эго в файле на C: НО ЛУЧШЕ, КОГДА архив баз 1С на отдельном диске
Далее находим строки, где формируется ПУСТАЯ база 1С8 для локальной копией информационной базы на ПК при ее отсутствии:
if Exist "%dest%" goto fi08
@echo Создаем папку %dest% ...
md "%dest%"
if Exist "I:1C1CПустая" @echo #k8SjZc9Dxk ... копируем файлы: .
if Exist "I:1C1CПустая" xcopy "I:1C1CПустая*.*" "%dest%" /S
if Exist "I:1C1CПустая" @echo #k8SjZc9Dxk .
:fi08
Заменить путь к пустой базе 1С папка «I:1C1CПустая» на сервере на Вашу папку с ПУСТОЙ базой. Если не знаете, как сделать ПУСТУЮ базу, то скопируйте из архива. ЭТОТ КУЧОК ИЗ СЕМИ СТРОК НУЖЕН для создания папки под копию базы на ПК-архиве.
И ПОСЛЕДНИЙ ШАГ ПО НАСТРОЙКЕ ПАКЕТА Save_C8.cmd – указать имя (в файле АДМИН) и пароль (7913) администратора баз данных 1С плюс имя кластера 1С(SERVER1). Т.е. нужно заменить эти параметры своими в следующих строках (Смотрите синтаксис этих команд во введении)
"C:Program Files1cv82\%Bep1C%in1cv8.exe" DESIGNER
/SSERVER1\%src%
/NАДМИН /P7913
/DumpIB%Dump%.dt
/Visible
Это одна строка пакета без переноса строк создает АРХИВ
«C:Program Files1cv82\%Bep1C%in1cv8.exe» DESIGNER
/F%dest%
/NАДМИН /P7913
/RestoreIB%Dump%.dt
/Visible
А это вторая строка пакета для создания копии базы на ПК из файла АРХИВА
Создание рабочих пакетов
В папке с файлом Save_C8.cmd Вы можете найти файл с примером создания архива ЗАРПЛАТЫ для фирмы ООО «Услуги» _ЗиК_Услуги_ООО.cmd. Поясним назначение переменных этого пакета и где можно найти информацию:
@echo off
set src=USLZ2010
set Dump=ЗиК_Услуги
set Dest=C:MyDocs1CЗик_Услуги
set APX=USLz
call Save_C8 %1
Первая строка — отключения режима отображения на экране информации о работе пакета Вторая строка указано имя информационной базы в кластере 1С из настройки базы (Смотри Рис.2)
Рис.2
Третья строка указывает имя папки на Вашем ПК, где будет храниться копия рабочей базы
Рис.3
В четвертой строке указан префикс архива Вашей базы в папке-архиве
set APX=USLz
Рис. 4
Создаете нужное Вам количество cmd-файлов с и ВСЕ ГОТОВО
Указанные пакеты копируем в нужное место на ПК и пишем последний cmd-файл, если баз 1С очень много. И этот файл уже указываем в планировщике заданий.
@echo off
@CLS
@echo #k8SjZc9Dxk #k8SjZc9Dxk[]-------------------------------------------------------------------------------#k8SjZc9Dxk[]
@echo #k8SjZc9Dxk #k8SjZc9Dxk| Создание архивов ВСЕХ информационных баз 1С 8.2 #k8SjZc9Dxk|
@echo #k8SjZc9Dxk #k8SjZc9Dxk| #k8SjZc9Dxk|
@echo #k8SjZc9Dxk #k8SjZc9Dxk| Дата:%DATE% #k8SjZc9Dxk #k8SjZc9Dxk #k8SjZc9Dxk #k8SjZc9Dxk (с) ООО КрайСС #k8SjZc9Dxk|
@echo #k8SjZc9Dxk #k8SjZc9Dxk[]-------------------------------------------------------------------------------#k8SjZc9Dxk[]
SET CPAM=Y
SET APXIB=I:1CФирма 1С1С 8.2АРХИВ
SET LogS=C:MyDocs1C\_Log_.txt
SET ErrC=C:MyDocs1C.Errors.cmd
SET OnErr=C:MyDocs1COnError.cmd
if Exist "%ErrC%" DEL "%ErrC%"
if Exist "%OnErr%" DEL "%OnErr%"
PushD C:
if Exist "C:MyDocs" goto fi06
md "C:MyDocs"
:fi06
if Exist "C:MyDocs1C" goto fi07
md "C:MyDocs1C"
:fi07
if Exist "%LogS%" DEL "%LogS%"
@echo #k8SjZc9Dxk@echo Off >%ErrC%
@echo #k8SjZc9Dxk@echo. #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo ======================================================================================== #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo. #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo Работа над ошибками при "Создании архива 1С 8.2" (с) ООО КрайСС #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo. #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo ======================================================================================== #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
@echo #k8SjZc9Dxk@echo. #k8SjZc9Dxk>#k8SjZc9Dxk>%LogS% >>%ErrC%
PopD
PushD D:
if Exist "D:1C архив" goto fi09
md "D:1C архив"
:fi09
if Exist "D:1C архивАРХИВ 1С8" goto fi11
md "D:1C архивАРХИВ 1С8"
:fi11
PopD
@echo #k8SjZc9Dxk Путь к копии ИБ: %APXIB%
@echo #k8SjZc9Dxk Путь к АРХИВУ ИБ: D:1C архивАРХИВ 1С8
@echo #k8SjZc9Dxk .
if Not Exist "D:1C архивАРХИВ 1С8*.dt" goto error
@echo Создаем копию ИБ : ...
call Run_CMD _Авт_ККСС_ОАО
call Run_CMD _Авт_КрайСС_ООО
call Run_CMD _Бух_ККСС_ОАО
call Run_CMD _Бух_ККСС_ООО
call Run_CMD _Бух_КрайСС_ООО
call Run_CMD _Бух_Крусар_ООО
call Run_CMD _Бух_Услуги_ООО
call Run_CMD _ЗиК_ККСС_ОАО
call Run_CMD _ЗиК_ККСС_ООО
call Run_CMD _ЗиК_КрайСС_ООО
call Run_CMD _ЗиК_Крусар_ООО
call Run_CMD _ЗиК_Услуги_ООО
call Run_CMD _Тор_ККСС_ОАО
call Run_CMD _Тор_ККСС_ООО
if Exist "%ErrC%" @rename "%ErrC%" OnError.cmd
goto End
:error
echo Ошибка программы или выход по требованию пользователя
:end
:Test_end
Выводы
Хотел коротко о главном – а получилось на 6 листах
Плюсы
1) Просто – все делаем с помощью средств 1С и ОС MS Windows
2) Можно создать задание планировщику
3) Есть отчет о ходе создания архива (Смотри ниже)
Минус
Один, но большой: НЕТ «выгонялки» для пользователей и фоновых заданий и т.п.
Планы
Написать и отладить примерно такой скрипт «выгонялку» на VBScript (Смотрите идею у Олега Филиппова в статье http://comol.livejournal.com/1614.html)
‘ Скрипт удаляет Все сеансы 1С
‘ Идея: Олег Филиппов
Dim Connector
Dim Agent
Dim Cluster
Dim WorkingProcess
Dim Memory
Dim Sessions
Dim Session
Dim iDuration
Set Connector = CreateObject(«V82.COMConnector»)
Set Agent = Connector.ConnectAgent(«tcp://1c8») ‘Имя сервера
Set Cluster = Agent.GetClusters()(0) ‘1 кластер в сервере
Agent.Authenticate Cluster, «», «»
Set WorkingProcess = Agent.GetWorkingProcesses(Cluster)(0) ‘1 Рабочий процесс в кластере
Sessions = Agent.GetSessions(Cluster)
For i = LBound(Sessions) To UBound(Sessions)
Set Session = Sessions(i)
Agent.TerminateSession Cluster, session
next
Структура файла отчета
========================================================================================
Создание архива информ.баз 1С 8.2 (с) ООО КрайСС
========================================================================================
ПАРАМЕТРЫ ЗАПРОСА
—————————————————————————————-
Имя ИнфБазы 1С8: USLZ2010
Файл выгрузки: ЗиК_Услуги
Путь к копии ИБ: C:MyDocs1CЗик_Услуги
: \SERVER1Install1CФирма 1С1С 8.2АРХИВ
Архив базы 1С8: USLz
Версия 1С8: 8.2.16.352
—————————————————————————————-
ОПИСАНИЕ ВЫГРУЗКИ
—————————————————————————————-
Создаем файл выгрузки ЗиК_Услуги …
Заменили имя файла на ЗиК_Услуги.dt0
Копируем файл ЗиК_Услуги в папку \SERVER1Install1CФирма 1С1С 8.2АРХИВ …
Создаем копию ИБ в C:MyDocs1CЗик_Услуги из файла ЗиК_Услуги …
Создаем архив USLz_000.22.09.2012 …
—————————————————————————————-
<<< Готово >>> АРХИВ ЗиК_Услуги
—————————————————————————————-
Дата:22.09.2012 Время:21:55:41,75
А чуть-чуть расширить описание обработки можно ???
Наименование архива, расширение и т.п….
а как обстоят дела с активными сессиями, фоновыми заданиями и т.п. ???
Cobian Backup — дешево и сердито
(3) zse, согласен, а ещё проще бат файл в назначенные задания
(3) zse
судя по скрину тут делается выгрузка средствами 1С
(4) zhleonid8
вопрос про активные сессии, фоновые задания и т.п. остался нераскрытым…
(1) Чуть-чуть расширил описание
(2) w-divin, Да. Вы правы!! Смотрите статью в прикрепленном файле. В этой пупликации описана идея. Рабочая, но идея
(4) zhleonid8, Так и сделано. Это — просто «ИДЕЯ». Для рабочей версии не хватает — «Выгонялкии 1С» для фоновых заданий. Пока на практике вынужден делать повтор для «сбойных» баз
(6) Elis_VP, Спасибо за описание, но как пользовался другими автоматическими архиваторами, так и пока буду. Они логически закончены.
Да выгонялка сюда бы очень не помешала. А идея хорошая. На мой взгляд архивирование лучше настраивать руками а не готовым инструментом. Хотя… В общем, Автору респект. Творческих и трудовых успехов 🙂
хороший вариант, автору респект!
(10) evgen1977, Добавил в новый вариант АРХИВА уже с выгонялкой
(9) Игорь. Я Вас не понял?
ДОБАВИЛ НОВЫЙ ЧУТОК ДОРАБОТАННЫЙ ВАРИАН АРХИВА с выгонялкой
ПОКА ОПИСАНИЯ — НЕТ (Нет времени)
Состав АРХИВА
_1_Save_1C8.cmd — пакет для первой попытки создать АРХИВ 1С
_2_ON_ERROR.cmd — вторая попытка уже удалением USERов из 1С
_ЗиК_Услуги_ООО.cmd — пример описания базы данных (У нас таких пакетов — 14)
CloseDB.vbs — скрит для удаления USERов из 1С
Run_CMD.cmd — постенький доп пакет (не требует настройки)
Save_C8.cmd — ЯДРО ПАКЕТА
Архив баз 1С8.pdf — простое описание (добавил к этому сообщения)
Ура. Отлично!!! Все, никаких программ. Только самостоятельная настройка. Обязательно попробую на клиенте 🙂