Имя: Пароль:
1C
1С v8
Система архивирования резервных баз данных
0 burrya
 
13.11.12
19:17
Есть потребность в разработке системы бэкапирования.
Описание сдесь:
https://dl.dropbox.com/u/87867708/Техническое%20задание.doc

Если Вам интересно, напишите возможные стоимость и сроки, почта в личке.

Спасибо.
1 Undefined vs NULL
 
13.11.12
19:26
0_о
2 Mafoni
 
13.11.12
19:31
А за такое не банят ?
3 Mafoni
 
13.11.12
19:31
(0) - ну и если что - то линк не кликабельный !
4 vde69
 
13.11.12
19:32
прикольно, только тот кто это писал нифига не понимает в IT
5 Mafoni
 
13.11.12
19:38
(4) +100500
6 Mafoni
 
13.11.12
19:38
(0) и чего стандартные какие нить тулзы не сипользовать ? Зачем сразу разрабатывать ?
7 vde69
 
13.11.12
19:41
(5) ну из стандартных нет реализации "проверка бекапа", только вот критериев этой проверки я с ходу десяток назову и чего нужно автору не понятно
8 Нуф-Нуф
 
13.11.12
19:42
не читал, но осуждаю
9 pumbaEO
 
13.11.12
20:00
Завалялось


' Настройка
Const Str_Version="1.3.22.1"    'Часть пути где лежит файл обновления без "\" в начале и конце Пример 1.3.22.1 или 1.3.22.1\3.74
                                   '(Посути версия очень удобно при частом обновлении меняется только эта строка)
                                   'Организуется структура папок с версиями
                                   'Например:
                                   '\\Server\UpdateCfg\1.3.19.1
                                   '\\Server\UpdateCfg\1.3.20.1
                                   '\\Server\UpdateCfg\1.3.21.1
                                   '\\Server\UpdateCfg\1.3.22.1
                                   '......

Const b_OnlyUpdate=False    'Если включен то только обновление конфигурации БД. Нужно если конфигурация уже загружена в основную

Const Str_FileToUpdate="1Cv8.cf"            ' Имя файла обновления

Const Str_PathUpdate="\\Server\UpdateCfg\" ' Путь к папке где лежать файлы обновлений с "\" в конце Пример:\\Server\UpdateCfg\
Const Str_PathLog="\\Server\LogUpdateCfg\" ' Путь к папке где будут создаваться лог-файлы с "\" в конце    Пример:\\Server\LogUpdateCfg\

'Пути к 1С
'Const Str_Path1C="%ProgramFiles(x86)%\1cv82\8.2.14.537\bin\1cv8.exe" ' 64
Const Str_Path1C="%ProgramFiles%\1cv82\8.2.14.537\bin\1cv8.exe"  ' 32

'
Const Str_UserAdmin="Gmix"        ' Имя пользователя в БД (Должен быть во всех базах)
Const Str_PassAdmin="Pass"        ' Пароль пользователя в БД (Должен быть во всех базах)
Const Str_UserAdminCluster=""        ' Имя администратора кластера (если есть)
Const Str_PassAdminCluster=""        ' Пароль администратора кластера (если есть)
Const Str_CodeEnabelBase="Admin"    ' Код разрешения запуска

Const I_DeniedKolMin=6                ' Кол минут до отключения пользователей

Const Str_DeniedMess=" для обновления конфигурации. Закройте программу и следите за сообщениями." 'Сообщение отключения пользователей

Const b_NetSend=True                                                  ' Отправлять сообщения о включении БД в домен
Const b_SendMessResult=True                                          ' Выдавать сообщения о результе обновления.
Const Str_DomenNetSend="*"                                              ' домен "*" - текущий
Const Str_OnLineMessage="В базе данных %Str_BaseSTR% можно работать!" 'Сообщение в домен


Public BDArray()

' Список баз для обновления
Const countBase=5             '  Количество Баз Обязательно
ReDim BDArray(countBase-1,4)    '    Колонка0-Имя сервера            (ОБЯЗАТЕЛЬНО ЗАДАТЬ)        Пример: SERVER1C:2041 или SERVER1C
                               '    Колонка1-Имя базы на сервере 1С    (ОБЯЗАТЕЛЬНО ЗАДАТЬ)        Пример: BD_MyBase1S
                               '    Колонка2-Признак тек действия:    (Не заполнять)
                               '            0 - загрузка основной и отключение пользователей
                               '            1 - конфигурация загружена
                               '            2 - пользователи отключены
                               '            3 - Обновление БД
                               '            4 - Конфигурация БД обновлена
                               '            5 - Блокировка сеансов отключена
                               '            9 - ошибка
                               '    Колонка3-Имя лог файла            (Не заполнять)
                               '    Колонка4-Представление базы для вывода в сообщений (ОБЯЗАТЕЛЬНО ЗАДАТЬ)        Пример: УПП Оперативный учет
id=0
BDArray(id,0)="SERVER1C"                ' Имя Сервера 1С
BDArray(id,1)="BD_MyBase1S_1"                ' Имя Базы на сервере 1С
BDArray(id,4)="Оперативный учет"    ' Представление базы данных
id=id+1

BDArray(id,0)="SERVER1C:2041"
BDArray(id,1)="BD_MyBase1S_2"
BDArray(id,4)="Бухгалтерский учет"
id=id+1

BDArray(id,0)="SERVER1C"
BDArray(id,1)="BD_MyBase1S_3"
BDArray(id,4)="Бухгалтерский учет 2"
id=id+1

BDArray(id,0)="SERVER1C"
BDArray(id,1)="BD_MyBase1S_4"
BDArray(id,4)="Бухгалтерский учет 3"
id=id+1

BDArray(id,0)="SERVER1C"
BDArray(id,1)="BD_MyBase1S_5"
BDArray(id,4)="Бухгалтерский учет 4"
id=id+1



' ТЕЛО
Public StatusArray(9)
StatusArray(0)="Загрузка основной конфигурации"
StatusArray(1)="Отключение пользователей"
StatusArray(2)="Пользователи отключены"
StatusArray(3)="Обновление конфигурации БД"
StatusArray(4)="Конфигурация БД обновлена"
StatusArray(5)="Блокировка сеансов снята"
StatusArray(6)=""
StatusArray(7)=""
StatusArray(8)=""
StatusArray(9)="Ошибка обновления"

Dim WshShell
set WshShell = CreateObject("wscript.Shell")
Dim fso
Set fso = CreateObject("scripting.filesystemobject")

Dim d_Denied
Dim id
Dim b_Add_Log

b_Add_Log=True

Set obj_FileLogAll= fso.OpenTextFile(Str_PathLog&"_ResultatUpdate.txt",2,True)

If Not b_OnlyUpdate Then
   obj_FileLogAll.WriteLine CStr(Now())&"    "&"Начало обновления на версию:"&Str_Version&" Количество баз:"&Cstr(countBase)
   
   obj_FileLogAll.WriteLine CStr(Now())&"    "&"Загрузка конфигураций из файлов"
   
   ' Обновляем основную конфигурацию
   For id=0 To countBase-1
       UpdateConf(id)
       obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
   Next
   
   obj_FileLogAll.WriteLine CStr(Now())&"    "&"Ожидание загрузки конфигураций из файлов"
   ' ждем пока во все базы загрузится конфигурация
   b_st=False
   Do While Not b_st
       WScript.Sleep 30000        ' пауза в 30 сек чтобы не гонять лишний раз
       b_st=True
       id=0
       For id=0 To countBase-1
           b_prStatus=BDArray(id,2)
           StatusUdateConf id, 0
           If BDArray(id,2)=0 Then
               b_st=False
           End If
           If BDArray(id,2)<>b_prStatus Then
               obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
           End If
       Next
   Loop

Else
   For id=0 To countBase-1
       Str_Base=BDArray(id,1)
       Str_LogFile=Str_PathLog&"Log_"&Str_Base&".txt"
       BDArray(id,3)=Str_LogFile
       BDArray(id,2)=2
   Next
End If

' Отключаем пользователей
d_Denied=DateAdd("n",I_DeniedKolMin,Now())

obj_FileLogAll.WriteLine CStr(Now())&"    "&"Отключение пользователей в: "&Cstr(d_Denied)

For id=0 To countBase-1
   User_Off_On id, 0
   obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
Next

' Ожидание отключения
Do While Now()<d_Denied
   WScript.Sleep 60000
Loop

' дадим еще половину минут отключения перед выкидыванием пользователей отключения пользователей

WScript.Sleep ((I_DeniedKolMin/2)+1)*60000

obj_FileLogAll.WriteLine CStr(Now())&"    "&"Отключение регламентных заданий и не отключенных пользователей"

' выкидываем пользователей
For id=0 To countBase-1
   User_Off_On id,1
   If Not BDArray(id,2)=9 Then
       obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
   End If
Next

obj_FileLogAll.WriteLine CStr(Now())&"    "&"Обновление конфигураций БД"

' Обновляем БД
For id=0 To countBase-1
   UpdateDB id
   If Not BDArray(id,2)=9 Then
       obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
   End If
Next

' ждем пока все базы обновяться и включим базы
b_st=False
b_err=False
Do While Not b_st
   WScript.Sleep 30000        ' пауза в 30 сек чтобы не гонять лишний раз
   b_st=True
   b_err=False
   id=0
   For id=0 To countBase-1
       b_prStatus=BDArray(id,2)
       StatusUdateConf id, 3
       If BDArray(id,2)=3 Then
           b_st=False
       End If
       If BDArray(id,2)=9 Then
           b_err=True
       End If
       If BDArray(id,2)<>b_prStatus Then
           obj_FileLogAll.WriteLine CStr(Now())&"        "&BDArray(id,4)&"    Статус-"&StatusArray(BDArray(id,2))&"("&BDArray(id,2)&")"
       End If
   Next
Loop
   
If b_err Then
   Str_mes="Обновление конфигураций завершено с ошибками смотри логи:"&Str_PathLog
Else
   Str_mes="Обновление конфигураций успешно завершено"
End If
obj_FileLogAll.WriteLine CStr(Now())&"    "&Str_mes
obj_FileLogAll.Close

If b_SendMessResult Then msgbox Str_mes

' ФУНКЦИИ

' Добавляет сообщение в лог файл
Sub AddLog(id,Str_Message)
   If Not b_Add_Log Then Exit Sub

   Set obj_FileLog= fso.OpenTextFile(BDArray(id,3),8,True)
   obj_FileLog.WriteLine CStr(Now())&"    "&Str_Message
   obj_FileLog.Close    
End Sub


' Обновляет конфигурацию
Sub UpdateConf(id)
   Dim Str_Base
   Str_Base=BDArray(id,1)
   
   Str_LogFile=Str_PathLog&"Log_"&Str_Base&".txt"
   If fso.FileExists(Str_LogFile) Then
       fso.DeleteFile Str_LogFile, True
   End If
   
   BDArray(id,3)=Str_LogFile
   
   AddLog id,"Обновление основной конфигурации из файла"
   
   ' Скопируем файл обновления чтобы не блокировать его разными базами
   Str_File_Update=Str_PathUpdate & Str_Version&"\"&Str_FileToUpdate
   Str_File_ToUpdate=Str_PathUpdate & Str_Version&"\"&Str_Base&"_"&Str_FileToUpdate
   
   AddLog id,"Копирование файла конфигурации "&Str_File_Update&" -> "&Str_File_ToUpdate    
   
   fso.CopyFile Str_File_Update, Str_File_ToUpdate, True

   AddLog id,"ОК"    
       
   Str_LogFile=Str_PathLog&Str_Base&".log"
   If fso.FileExists(Str_LogFile) Then
       AddLog id,"Найден файл:"&Str_LogFile&" Удаление"
       fso.DeleteFile Str_LogFile, True
       AddLog id,"ОК"    
   End If
   
   Str_LogFile=Str_PathLog&Str_Base&".txt"
   If fso.FileExists(Str_LogFile) Then
       AddLog id,"Найден файл:"&Str_LogFile&" Удаление"
       fso.DeleteFile Str_LogFile, True
       AddLog id,"ОК"    
   End If
               
   Str_ConectionBase="/S"""&BDArray(id,0)&"\"&Str_Base&""""
   Srt_infoBaseAuthorization=" /N"""&Str_UserAdmin&""" /P"""&Str_PassAdmin&""" /WA-"
   
   str_command=""""&Str_Path1C&""""&" DESIGNER "& Str_ConectionBase & Srt_infoBaseAuthorization &" /UpdateCfg """&Str_File_ToUpdate&""" /UC"&Str_CodeEnabelBase&" /DisableStartupMessages"&" /DumpResult """&Str_PathLog&Str_Base&".log"""&" /Out """&Str_LogFile&""""
   
   AddLog id,"Запуск конфигуратора для загрузки основной конфигурации из файла:"
   AddLog id,"Команда запуска:    "&Replace(str_command,"/P"""&Str_PassAdmin&"""","/P""********""")

   WshShell.Run str_command
   
   BDArray(id,2)=0
   AddLog id,"Состояние БД:"&CStr(BDArray(id,2))
End Sub

' Проверяет обновлена ли конфигурация
Sub StatusUdateConf(id,iType)
   Str_Base=BDArray(id,1)
   
   If BDArray(id,2)>iType Then
       Exit Sub
   End If

   Str_File_ToUpdate=Str_PathUpdate & Str_Version&"\"&Str_Base&"_"&Str_FileToUpdate
   Str_LogFile=Str_PathLog&Str_Base&".log"
   
   If fso.FileExists(Str_LogFile) Then
       On Error Resume Next
       Set obj_FileLog= fso.OpenTextFile(Str_LogFile,1,False,0)
       Str_txt=Mid(obj_FileLog.ReadLine,4)
       If Err.Number=0 Then
           AddLog id,"Файл результата открыт "&Str_LogFile
           On Error goto 0
           If Trim(Str_txt)="0" Then
               If iType=0 Then
                   AddLog id,"Основная конфигурация обновлена:"
               Else
                   AddLog id,"Конфигурация базы данных успешна обновлена:"
               End If
               
               If iType=0 Then
                   AddLog id,"Удаление файла:"&Str_File_ToUpdate
                   fso.DeleteFile Str_File_ToUpdate, True
                   AddLog id,"ОК"
                   
                   BDArray(id,2)=1
                   AddLog id,"Готовность к обновлению"
               Else
                   BDArray(id,2)=4
                   AddLog id,"Готовность к включению БД"
                   
                   WScript.Sleep 30000 ' 30 сек дабы точно все файлы разблокировались
                   
                   Str_ConectionBase="/S"""&BDArray(id,0)&"\"&Str_Base&""""
                   Srt_infoBaseAuthorization=" /N"""&Str_UserAdmin&""" /P"""&Str_PassAdmin&""" /WA-"
                   
                   str_command=""""&Str_Path1C&""""&" ENTERPRISE  "& Str_ConectionBase & Srt_infoBaseAuthorization &" /UC"&Str_CodeEnabelBase&" /CРазрешитьРаботуПользователей"
                   
                   AddLog id,"Запуск 1С Предприятия для запуска обработок обновления:"
                   AddLog id,"Команда запуска:    "&Replace(str_command,"/P"""&Str_PassAdmin&"""","/P""********""")
               
                   WshShell.Run str_command
                   
                   WScript.Sleep 2*60000 ' 2 минуты перед включением регл заданий
                   
                   User_Off_On id,2
               End If
           Else
               AddLog id,"Результат:["&Trim(Str_txt)&"]"
               If iType=0 Then
                   AddLog id,"ERR->>    В процессе обновления основной конфигурации были ошибки подробнее см. файл:"&Str_Base&".txt"
               Else
                   AddLog id,"ERR->>    В процессе обновления конфигурации базы данных были ошибки подробнее см. файл:"&Str_Base&".txt"
               End If
               BDArray(id,2)=9
           End If
       Else
           AddLog id,"Файл результата блокирован "&Str_LogFile
           On Error goto 0
       End If
       Err.Clear()
   End If

End Sub

' Обновляет базу данных
Sub UpdateDB(id)
   Str_Base=BDArray(id,1)
   
   AddLog id,"Обновление конфигурации БД:"
   AddLog id,"Состояние БД:"&CStr(BDArray(id,2))
       
   If BDArray(id,2)<>2 Then
       Exit Sub
   End If
   
   Str_LogFile=Str_PathLog&Str_Base&".log"
   If fso.FileExists(Str_LogFile) Then
       AddLog id,"Найден файл:"&Str_LogFile&" Удаление"
       fso.DeleteFile Str_LogFile, True
       AddLog id,"ОК"    
   End If
   
   Str_LogFile=Str_PathLog&Str_Base&".txt"
   If fso.FileExists(Str_LogFile) Then
       AddLog id,"Найден файл:"&Str_LogFile&" Удаление"
       fso.DeleteFile Str_LogFile, True
       AddLog id,"ОК"    
   End If
           
   Str_ConectionBase="/S"""&BDArray(id,0)&"\"&Str_Base&""""
   Srt_infoBaseAuthorization=" /N"""&Str_UserAdmin&""" /P"""&Str_PassAdmin&""" /WA-"
   
   str_command=""""&Str_Path1C&""""&" DESIGNER "& Str_ConectionBase & Srt_infoBaseAuthorization &" /UpdateDBCfg -Server /UC"&Str_CodeEnabelBase&" /DisableStartupMessages"&" /DumpResult """&Str_PathLog&Str_Base&".log"""&" /Out """&Str_PathLog&Str_Base&".txt"""
   
   AddLog id,"Запуск конфигуратора для обновления конфигурации БД:"
   AddLog id,"Команда запуска:    "&Replace(str_command,"/P"""&Str_PassAdmin&"""","/P""********""")

   WshShell.Run str_command
   
   BDArray(id,2)=3
   AddLog id,"Состояние БД:"&CStr(BDArray(id,2))
End Sub

' Отключает включает пользователей
Sub User_Off_On(id,iType)
   Dim obj_ThisCluster

   Str_Base=BDArray(id,1)
   Str_ServerAndPort=BDArray(id,0)
   
   Select Case iType
       Case 0  
           AddLog id,"Запуск установки блокировки базы данных"
       Case 1  
           AddLog id,"Запуск прерывание соединений пользователей"
       Case Else  
           AddLog id,"Запуск отключения блокировки базы данных "
   End Select
   
   AddLog id,"Состояние БД:"&CStr(BDArray(id,2))
   
   Select Case iType
       Case 0  

       Case 1  
           If BDArray(id,2)>1 Then
               Exit Sub
           End If
       Case Else  
           If BDArray(id,2)>4 Then
               Exit Sub
           End If
   End Select
   
   Str_LogFile=Str_PathLog&Str_Base&".txt"
   
   ' Определяем параметры кластера сервера
   AddLog id,"Определяем параметры кластера серверов"
   
   Str_Server=""
   Str_Port=""

   I_PozPort=InStr(Str_ServerAndPort,":")
   
   If I_PozPort>0 Then
       Str_Server=Left(Str_ServerAndPort,I_PozPort-1)
       Str_Port=Mid(Str_ServerAndPort,I_PozPort+1)
       ' если есть порт
       'то как правило рабочий порт на 1 меньше
       I_Port=CInt(Str_Port)
       If I_Port>0 Then
           Str_Port=":"&CStr(I_Port-1)
       End If
   Else
       Str_Server=Str_ServerAndPort
   End If

   Set Obj_connection = CreateObject("V82.COMConnector")
           
               
   'Получим порт рабочего процесса
   Srt_portWorkProcess=""

   Set Obj_Agent=Obj_connection.ConnectAgent(Str_Server+Str_Port)
   
   For Each obj_Cluster In Obj_Agent.GetClusters()
       On Error Resume Next
       Set Obj_Arr_workProcess=Obj_Agent.GetWorkingProcesses(obj_Cluster)
       If Err.Number<>0 Then
           On Error Goto 0
           Obj_Agent.Authenticate obj_Cluster,Str_UserAdminCluster,Str_PassAdminCluster
       Else
           On Error Goto 0
       End If
       Err.Clear()
       For Each obj_workProcess In Obj_Agent.GetWorkingProcesses(obj_Cluster)
           If obj_workProcess.Running=1 AND obj_workProcess.Use>0 Then
               Srt_portWorkProcess=CStr(obj_workProcess.MainPort)
               
               Set obj_ThisCluster=obj_Cluster
               
               Exit For
           End If
       Next
   Next

   If Srt_portWorkProcess="" Then
       BDArray(id,2)=9
       
       AddLog id,"ERR-->    Не удалось определить порт рабочего процесса"

       Exit Sub
   Else
       AddLog id,"Рабочий процесс:"&Str_Server&":"&Srt_portWorkProcess
   End If
   
   AddLog id,"Авторизация в БД :"
   
   Set obj_ConnectionWorkProcess=Obj_connection.ConnectWorkingProcess(Str_Server&":"&Srt_portWorkProcess)
   
   obj_Arr_obj_ConnectionWorkProcess=obj_ConnectionWorkProcess.GetInfoBases()
   
   For Each obj_IB In obj_Arr_obj_ConnectionWorkProcess
       If UCase(obj_IB.Name)=UCase(Str_Base) Then
           If obj_IB.DBName="" Then
               ' Авторизация
               obj_ConnectionWorkProcess.AddAuthentication Str_UserAdmin,Str_PassAdmin
           End If
           
           If obj_IB.DBName="" Then
               BDArray(id,2)=9
               AddLog id,"ERR-->    Не удалось авторизоваться в базе данных"

               Exit Sub
           Else
               AddLog id,"OK"
           End If
           
           Exit For
       End If
   Next
   
   Select Case iType
       Case 0
           AddLog id,"Установка блокировки базы данных в "&CStr(d_Denied)
           ' устанавливаем блокировку базы
           
           obj_IB.PermissionCode= Str_CodeEnabelBase
           obj_IB.SessionsDenied =True
           obj_IB.DeniedFrom =d_Denied
           obj_IB.DeniedTo = #1/1/100#
           obj_IB.DeniedMessage=Str_DeniedMess
           obj_IB.ScheduledJobsDenied=True
           
           obj_ConnectionWorkProcess.UpdateInfoBase obj_IB
           AddLog id,"ОК"
       Case 1
           AddLog id,"Прерывание соединений пользователей"
           
           obj_Arr_obj_IB_Info=Obj_Agent.GetInfoBases(obj_ThisCluster)
   
           For Each obj_IB_Info In obj_Arr_obj_IB_Info
               If UCase(obj_IB_Info.Name)=UCase(Str_Base) Then
                   
                   Exit For
               End If
           Next
           
           ' Отключаем соединения базы данных
           obj_connectionsV8=Obj_Agent.GetInfoBaseSessions(obj_ThisCluster,obj_IB_Info)
           For Each obj_connectV8 In obj_connectionsV8
               If Not obj_connectV8.AppID="COMConsole" Then
                   AddLog id,"    "&CStr(obj_connectV8.SessionID)&"    "&obj_connectV8.AppID&"    "&obj_connectV8.userName&"    "&obj_connectV8.Host  
                   Obj_Agent.TerminateSession  obj_ThisCluster, obj_connectV8
                   AddLog id,"    ОК"
               End If
           Next
           
           b_notConnection=True
           obj_connectionsV8=Obj_Agent.GetInfoBaseSessions(obj_ThisCluster,obj_IB_Info)
           For Each obj_connectV8 In obj_connectionsV8
               If Not obj_connectV8.AppID="COMConsole" Then
                   b_notConnection=False
                   Exit for    
               End If
           Next
           ' Проверяем нет ли соединений
           If b_notConnection Then
               AddLog id,"Все соединения отключены"
               BDArray(id,2)=2
           Else
               BDArray(id,2)=9
               AddLog id,"ERR - > Не все соединения отключены"
           End If
       Case Else
             AddLog id,"Отключение блокировки базы данных "
           ' Снимаем блокировку базы
           
           obj_IB.SessionsDenied =False
           obj_IB.ScheduledJobsDenied=False
           
           obj_ConnectionWorkProcess.UpdateInfoBase obj_IB
           AddLog id,"ОК"
           BDArray(id,2)=5
           
           If b_NetSend Then
               str_command="net send "&Str_DomenNetSend&" "&Replace(Str_OnLineMessage,"%Str_BaseSTR%",BDArray(id,4))
                   
               AddLog id,"Отправка сообщения в домен:"
               AddLog id,""&str_command
               
               WshShell.Run str_command
           End If
           
   End Select
   
   AddLog id,"Состояние БД:"&CStr(BDArray(id,2))
   
End Sub
10 Asmody
 
13.11.12
20:02
(7) проверка бэкапа: валишь сервер. получилось восстановить за 30 минут - хороший бэкап. естественно всё делается на боевом сервере. вообще, лучше, если сервер один, и используется как рабочий компьютер
11 ilya_i
 
13.11.12
20:15
(9) это на чём?
12 pumbaEO
 
13.11.12
22:20
(11) vbscript
13 rs_trade
 
13.11.12
22:39
(6) распил бабла же.
14 burrya
 
16.11.12
13:03
15 burrya
 
16.11.12
13:05
Техническое задание
Разработка системы автоматизированного резервного копирования и обслуживания баз данных 1с 8.х.
Основные функции:
?    Снижение рисков потери данных за счет использования нескольких методов резервного копирования;
?    Уменьшение интервала резервного копирования с минимальным влиянием на производительность системы;
?    Хранение резервных копий в сжатом виде в нескольких архивах (местах хранения);
?    Автоматическое обслуживание архива копий (удаление устаревших по алгоритму);
?    Ведение журнала всех операций;
?    Рассылка уведомлений об основных событиях;
?    Подробное комментирование программного кода;
Дополнительные функции:
?    Обслуживание базы данных SQL Server 2005/2008
?    Проверка работоспособности резервной копии
?
Технические требования:
1.    Среда разработки.
Система резервного копирования может быть реализована на одном из скриптовых языков – VBScript или PowerShell.
Все команды должны быть подробно прокомментированы.
Все настройки должны выполняться через переменные и константы.

2.    Методы резервного копирования.
В работе системы должны использоваться 2 метода резервного копирования:
•    Средствами 1с8.х
•    Средствами SQL Server 2005/2008 с полным и инкрементным копированием.

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

3.    Расписание резервного копирования.
Резервное  копирование в SQL Server:
•    Полное – 2 раза в сутки (7:50 и 19:50)
•    Лог транзакций – каждые 4 часа
Резервное копирование в 1с.
•    1 раз в неделю – (каждое воскресенье в 19:50)

4.    Расположение резервных копий.
Резервные копии должны выполняться на локальный диск сервера, а затем копироваться на 3 сервера по сетевому пути вида \\server_ip\shared_folder
Перед копированием должна выполняться проверка доступности сервера и наличия свободного дискового пространства.

5.    Алгоритм обслуживания архивов копий.
Резервные копии хранить по следующему алгоритму, лишние автоматически удалять:
•    За последний месяц – ежедневно;
•    За последний год – еженедельно;
•    За срок более года – ежемесячно.
?
6.    Формат журнала операций.
Вести журнал по следующим операциям:
•    Начало резервного копирования;
•    Завершение резервного копирования;
•    Начало копирования в архив;
•    Завершение копирования в архив;
•    Удаление неактуальных резервных копий;
•    Обновление конфигурации.

7.    Формат системы уведомлений.
Совместно с ведением журнала операций должна выполняться рассылка уведомлений о следующих событиях:
•    Успешное выполнение резервного копирования и сохранения копий в архивы
•    Сбой при выполнении резервного копирования (с подробным описанием причины)
•    Сбой при копировании резервной копии в архив (с подробным описанием причины)
•    Успешное обновление конфигурации
•    Сбой при обновлении конфигурации (с подробным описанием причины)
16 Maxus43
 
16.11.12
13:11
ужас наф. в СКЛ это всё настраивается, что касается бэкапов, почты и т.д.
17 Irek-kazan
 
16.11.12
13:12
бюджет озвучьте
18 burrya
 
16.11.12
15:08
(17) стоимость хотелось бы чтоб сформировал исполнитель, и сроки тоже. Можно на почту, она в личке.
19 Sammo
 
16.11.12
15:12
В работе системы должны использоваться 2 метода резервного копирования:
•    Средствами 1с8.х

Зачем? если скуль.
20 burrya
 
16.11.12
15:27
(19) раз в неделю на всякий случай не помешает