Имя: Пароль:
1C
1С v8
резервное копирование, помогите, плизззз.....
0 tank_81
 
26.06.14
10:51
DumpPath = "D:\BackUp2Work\New"

  FileName = "work2" ' Название бэкапа базы
  ServerName = "Server1C:1541"  ' Название сервера 1С Предприятия
  ServerName = "Server1C:1641"  ' Название сервера 1С Предприятия
  InfoBaseName = "work_base_82" ' Имя архивируемой базы
  ClasterPortNumber = 1641

  ' Эти данные лучше в скрипте не светить, а использовать Windows аунтификацию
  ' Имя и Пароль пользователя назначенного для архивирования
  InfoBasesAdminName = "Admin"
  InfoBasesAdminPass = "3425165"

  ' Имя и Пароль Администратора кластера
  ClasterAdminName = ""
  ClasterAdminPass = ""

  LockPermissionCode = "3425165" ' Код блокировки базы
  LockMessageText = vbCrLf + "БАЗА ЗАКРЫТА НА СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ" + vbCrLf + "Администратор - БАЗЫ"
  LockPermissionCode = "3425165" ' Код блокировки базы

  ClasterAdminName = ""
  ClasterAdminPass = ""

  FindInfoBase = False 'Флаг, что ИБ найдена

  Set WshShell = CreateObject("WScript.Shell")
PrgDirx86 = WshShell.RegRead("HKEY_CLASSES_ROOT\CLSID\{b3a7d9db-3cba-47f4-b80a-5dda79d8925a}\LocalServer32\")
' PrgDirx86 = WshShell.RegRead("HKEY_CLASSES_ROOT\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287}\LocalServer32\")
  strNow = Now()

FullPathName = DumpPath & "\" & _
Right(Year(strNow), 4)+Right("0" & Month(strNow), 2)+Right("0" & Day(strNow), 2) & "_" & _
Right("0" & Hour(strNow), 2)+ Right("0" & Minute(strNow), 2) & "_" & _
FileName & ".dt"

  If InStr(FullPathName, " ") <> 0 Then
   FullPathName = FullPathName
   'FullPathName = Chr(34) + FullPathName + Chr(34)
   'FullPathName2 = Chr(34) + FullPathName2 + Chr(34)
  End If
  
  Set ComConnector = CreateObject("v82.COMConnector")
  Set ServerAgent = ComConnector.ConnectAgent(ServerName)
  
  ' Получим массив кластеров сервера у агента сервера
  Clasters = ServerAgent.GetClusters()
  
  ' Найдем необходимый нам кластер
  For Each Claster In Clasters
    If Claster.MainPort = ClasterPortNumber Then
      ServerAgent.Authenticate Claster, ClasterAdminName, ClasterAdminPass
      ' Получаем список рабочих процессов
      WorkingProcesses = ServerAgent.GetWorkingProcesses(Claster)
      For Each WorkingProcess In WorkingProcesses
        If WorkingProcess.Running = 1 Then
          ' Для каждого рабочего процесса создаем соединение с рабочим процессом
          Set connecttoworkprocess = ComConnector.ConnectWorkingProcess("tcp://" + WorkingProcess.HostName + ":" + CStr(WorkingProcess.MainPort))
          connecttoworkprocess.AuthenticateAdmin ClasterAdminName, ClasterAdminPass
          connecttoworkprocess.AddAuthentication InfoBasesAdminName, InfoBasesAdminPass
          If Not FindInfoBase Then
            ' Получаем список ИБ рабочего процесса
            InfoBases = connecttoworkprocess.GetInfoBases()
            For Each InfoBase In InfoBases
              ' Ищем нужную базу
              If UCase(InfoBase.Name) = UCase(InfoBaseName) Then
                FindInfoBase = True
                Exit For
              End If
            Next

            If Not FindInfoBase Then ' Не нашли нужную базу
              Exit For
            End If

            ' Устанавливаем запрет на подключение новых соединений
            InfoBase.ConnectDenied = True
            InfoBase.DeniedFrom = CStr(Now())
            InfoBase.DeniedTo = CStr(Now() + 1 / 24 * 0.25)
            InfoBase.DeniedMessage = LockMessageText
            InfoBase.PermissionCode = LockPermissionCode

            connecttoworkprocess.UpdateInfoBase (InfoBase)

          End If

          If FindInfoBase Then
            ' Получаем массив соединений с ИБ
            Connections = connecttoworkprocess.GetInfoBaseConnections(InfoBase)
            For Each Connection In Connections
              ' Разрываем Connections с ИБ
              If Connection.AppId <> "SrvrConsole" Then
                connecttoworkprocess.Disconnect (Connection)
              End If
            Next

            ' Запускаем архивацию
            LineExe = """" + PrgDirx86 + """ CONFIG /S" + ServerName2 + "\" + InfoBaseName + _
                      " /N" + InfoBasesAdminName + " /P" + InfoBasesAdminPass + _
                      " /UC" + LockPermissionCode + " /DisableStartupMessages /DumpIB" + FullPathName

            WshShell.Run LineExe, 5, True

            ' Отключаем блокировку базы
            InfoBase.ConnectDenied = True
            connecttoworkprocess.UpdateInfoBase (InfoBase)

          End If
        End If
      Next
    End If
  Next

  ComConnector = Null
  ServerAgent = Null
  Clasters = Null
  WorkingProcesses = Null
  connecttoworkprocess = Null
  InfoBases = Null
  InfoBase = Null
  Connections = Null
1 acsent
 
26.06.14
10:52
1с не рекомендует делать резервное копирование выгрузкой в дт
2 Cube
 
26.06.14
10:52
' Эти данные лучше в скрипте не светить, а использовать Windows аунтификацию
' Имя и Пароль пользователя назначенного для архивирования
InfoBasesAdminName = "Admin"
InfoBasesAdminPass = "3425165"

Бугагашеньки)))))))
3 Cube
 
26.06.14
10:53
(1) Мало ли чо... Вот Минздрав не рекомендует курить...
4 Segate
 
26.06.14
10:53
(0) бэкапь сценарием SQL будь мужиком )
5 tank_81
 
26.06.14
10:54
Только не кидайтесь тапками). Ситуация следующая: была 1с 8.1, обновили до 8.2, но 8.1 тоже функционирует на одном и том же сервере.
6 dj_serega
 
26.06.14
10:54
(2) Та это тестовый сервер, нечего бояться :)
7 tank_81
 
26.06.14
10:56
1с не рекомендует делать резервное копирование выгрузкой в дт, ага, читали уже. нужна dt  именно, потому что часто просят бухи, тобы згрузить ее локально и поэкспериментировать
8 Cube
 
26.06.14
11:03
(7) Так где твой вопрос-то?
9 tank_81
 
26.06.14
11:05
где ошибка в скрипте?
10 tank_81
 
26.06.14
11:07
v8: Бэкап 1с82 серверный вариант в *.dt  скриптом  взято отсюда, подставлены свои значения
11 Cube
 
26.06.14
11:07
(9) Какой молодец :)
Вывалил портянку, а нам дебажить её?))
12 Cube
 
26.06.14
11:08
Я для каждой ИБ отдельный батник сделал и не парюсь.
13 hhhh
 
26.06.14
11:09
(9) ну вы нам хотя бы текст ошибки приведите
14 tank_81
 
26.06.14
11:09
нужна копия только 8.2, 8.1 просто как архивную просматривают
15 tank_81
 
26.06.14
11:15
Set ServerAgent = ComConnector.ConnectAgent(ServerName)  на эту  строку ругается
16 Azverin
 
26.06.14
11:19
(15) при установке сервера в опциях установки можно выбрать COM-соединение или сделай: regsvr32.exe C:\Program Files\1cv82\8.2.хх.ххх\bin\comcntr.dll
17 tank_81
 
26.06.14
12:13
Сервер недоступен ( не отвечает (завершается аварийно или порт занят другим приложением ) источник v82.COMConnector.1
18 tank_81
 
26.06.14
12:14
Спасибо, попробую. Не было инета, последнее сообщение написано без учета  
при установке сервера в опциях установки можно выбрать COM-соединение или сделай: regsvr32.exe C:\Program Files\1cv82\8.2.хх.ххх\bin\comcntr.dll
19 tank_81
 
26.06.14
12:59
не удалось загрузить модуль C:\Program  Проверьте, что двоичный файл храниться на указанном пути или запустите отладку, что бы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами
20 Kookish
 
26.06.14
12:59
(7) В чем проблема? Научи бухов выгружать в dt вручную и экспериментировать. А НАСТОЯЩЕЕ резервное копирование - средствами SQL, как мужик.
21 tank_81
 
26.06.14
12:59
я не мужик))
22 tank_81
 
26.06.14
13:00
их там народу много, dt  только монопольно выгружать надо же
23 Segate
 
26.06.14
13:00
(19) кавычки?
24 PR
 
26.06.14
13:00
(21) Не ври, личка говорит, что мужик :))
25 tank_81
 
26.06.14
13:00
а dt  бывает нужна прям сейчас)
26 Kookish
 
26.06.14
13:00
Непрерывно тащусь вот от таких постов типа: "Я не хочу делать правильно, подскажите, как мне правильно сделать неправильно".
27 tank_81
 
26.06.14
13:00
по умолчанию наверное, не поменяла
28 PR
 
26.06.14
13:01
(7) Просто тупо скопируй каталог базы и все.
29 PR
 
26.06.14
13:01
(27) Тогда давай фотку :))
30 Kookish
 
26.06.14
13:01
(27) Ага, спалилась. Сейчас фотку требовать начнут.
31 tank_81
 
26.06.14
13:01
насчет sql "внедренцы" напугали, что если не пробовали раньше, то не трогайте, чтобы не испортить ничего. может конечно пугают просто
32 tank_81
 
26.06.14
13:02
у Вас тут фэйс контроль оказывается)
33 Kookish
 
26.06.14
13:03
(31) Стопудово пугают. Скриптов для резервного копирования вагон и маленькая тележка. Даже я могу подкинуть.
34 tank_81
 
26.06.14
13:04
подкиньте, если не сложно
35 Kookish
 
26.06.14
13:07
DECLARE @CurrentFileDate char(10)
        , @BackupFile varchar(255)

SET @CurrentFileDate = CONVERT(char(10),getdate(),121)
SET @BackupFile = 'D:\SQL_Back\MyLovelyBackup-'+@CurrentFileDate + '.bak'

BACKUP DATABASE MyLovelyBase
    TO  DISK = @BackupFile
WITH
    NOFORMAT,
    NOINIT,  
    NAME = N'LovelyBase - Full Database Backup',
    SKIP,
    RETAINDAYS = 20,
    STATS = 10;
GO
36 Kookish
 
26.06.14
13:07
Что-то вроде.
37 tank_81
 
26.06.14
13:10
Спасибо, еще бы знать, что с этим делать). Я в этом совсем чайник.
38 tank_81
 
26.06.14
13:16
Странно, почему путь не может найти regsvr32.exe C:\Program Files\1cv82\8.2.хх.ххх\bin\comcntr.dll (хх, если что поменяла на цифры)
39 tank_81
 
26.06.14
13:17
библиотека такая в этом месте существует
40 Segate
 
26.06.14
13:18
>>не удалось загрузить модуль C:\Program  Проверьте, что двоичный файл храниться на указанном пути или запустите отладку, что бы диагностировать проблемы с этим двоичным файлом или зависимыми DLL-файлами


Я уже говорил, что из за отсутствия ковычкек- скрипт парсит путь до пробела, и валится, потому что папки PROGRAM не существует.
41 tank_81
 
26.06.14
13:20
а где кавычки нужно поставить?
42 Cube
 
26.06.14
13:21
(37) В свете открывшихся обстоятельств, мы теперь требуем, чтобы у тебя в личной карточке поменялся пол и появилась фотка =)))
43 tank_81
 
26.06.14
13:23
пол поменяла)
44 Kookish
 
26.06.14
13:24
(41) (43) Теперь бы цвет волос выяснить. И скорректировать. :)
45 Kookish
 
26.06.14
13:25
Кавычками закрываем строку, которая содержит пробелы, но должна представлять собой единую сущность. Например, путь к файлу, передаваемый в качестве параметра. Я понятно выражаюсь?
46 tank_81
 
26.06.14
13:25
все, с кавычками разобралась
47 tank_81
 
26.06.14
13:26
спасибо
48 Segate
 
26.06.14
13:26
(47) а фотка?
49 Segate
 
26.06.14
13:27
(45) фига... как то меня на объяснение больше чем "кавычки поставь" не хватает, а оно вон как можно объяснять =)) не быть мне учителем
50 tank_81
 
26.06.14
13:30
да, хорошее объяснение) только библиотека зарегистрировалась, а ошибка все та же
51 Segate
 
26.06.14
13:31
(50) писят постов уже... триал версия кончилась. Надо ПРОФ преобретать. ПРОФ версия поддержки требует наличия фото в профиле.
52 kosts
 
26.06.14
13:36
(50) В чем еще проблема?
53 tank_81
 
26.06.14
13:42
Сервер недоступен ( не отвечает (завершается аварийно или порт занят другим приложением ) источник v82.COMConnector.1  та же самая ошибка,что и до регистрации библиотеки
54 Segate
 
26.06.14
13:49
(53) вы своим чайником отняли у себя возможность получить помощь...
55 kosts
 
26.06.14
13:49
(53) составь полную командную строку для резервирования
Т.е. вместо этого
PrgDirx86 + """ CONFIG /S" + ServerName2 + "\" + InfoBaseName + _
                      " /N" + InfoBasesAdminName + " /P" + InfoBasesAdminPass + _
                      " /UC" + LockPermissionCode + " /DisableStartupMessages /DumpIB" + FullPathName

Пропиши все руками и выполни в командной строке. Для тестирования.
Резервирование по этому скрипту всё равно выполняется без com.
56 tank_81
 
26.06.14
13:52
зато объективно) (это я насчет фотки)
57 Новенький_2009
 
26.06.14
13:53
Прежде чем городить (0), кликни правой кнопкой по ярлыку запуска 1С, и в поле "Объект" впиши РУКАМИ полную командную строку, по типу как советуют в (55). Добейся, чтобы так заработало, а уж потом, после этого, начинай свои раскопки на тему "почему у меня не работает".
58 Cube
 
26.06.14
13:54
(56) Нет, фотка незачет... Мы так не играем))
59 tank_81
 
26.06.14
13:56
спасибо всем, кто отвечал, к сожалению сегодня больше не попробовать, народ работает , обязательно воспользуюсь советом
60 Новенький_2009
 
26.06.14
13:57
(59) подсказка из зала: а на тестовой базе можно играться сколько хочешь. И народ будет работать дальше.
61 Segate
 
26.06.14
13:58
(59) ты еще и на рабочей базе это делала? оО омфг!
62 tank_81
 
26.06.14
14:07
НУ КОПИЯ ПРЕДВАРИТЕЛЬНО СДЕЛАНА БЫЛА, А ЧЕМ ТУТ МОЖНО ИСПОРТИТЬ БАЗУ?
63 kosts
 
26.06.14
14:08
(62) Пользователей невзначай так отрубишь несколько раз массово....
64 tank_81
 
26.06.14
14:11
насчет тестовой туплю конечно))можно сейчас то и на ней тренироваться. По другим вопросам звонят просто (1с как побочку навалили, без объяснений всяких, вот и мучаюсь). Я на обеде пробовала, после сделанной в ручную копии, так что, те кто вваливался, сами виноваты
65 Segate
 
26.06.14
14:11
(62) А то что пол дня ты мешала работать?

ну и... вот эта картинка в тему
http://xkcd.ru/i/327_v1.png
66 tank_81
 
26.06.14
14:13
нет, не мешала, до этого на обеде тоже пробовала и сегодня
67 kosts
 
26.06.14
14:15
(66) Если что, то у этого скрипта одно достоинство - он отрубает пользователей (вдруг кто-то на ночь не вышел).
В принципе и в батнике можно копировать.
68 tank_81
 
26.06.14
14:27
т.е в PrgDirx86 + """ CONFIG /S" + ServerName2 + "\" + InfoBaseName + _
                      " /N" + InfoBasesAdminName + " /P" + InfoBasesAdminPass + _
                      " /UC" + LockPermissionCode + " /DisableStartupMessages /DumpIB" + FullPathName

вместо ServerName2 ,InfoBaseName ,InfoBasesAdminName ,InfoBasesAdminPass ,LockPermissionCode  свои параметры прописать и вставить в выполнить?
69 Новенький_2009
 
26.06.14
14:37
(68) Правильно. Нужно собрать строку для запуска РУКАМИ и ее как-то выполнить: через консоль или как я написал.

(66) >> Если что, то у этого скрипта одно достоинство - он отрубает пользователей (вдруг кто-то на ночь не вышел).

6-ть лет назад, со времен БП 1.5 во ВСЕХ типовых есть специальный механизм "мягкого" выгона пользователей. Его, если эта типовая, в 2014, уж пора б как-нить использовать. Не?

Кстати, автор. Какая конфа то хоть? Типовая с БСП?
70 tank_81
 
26.06.14
14:41
Управление производственным предприятием, редакция 1.3 (1.3.50.1/1.4)  не типовая, переделанная под нас
71 tank_81
 
26.06.14
14:42
что за специальный механизм "мягкого" выгона пользователей? я только стандартную блокировку соединений знаю
72 kosts
 
26.06.14
14:56
(69) > "мягкого" выгона пользователей
Ну это если в рабочее время, ночью кто кто закроет программу? Только отрубить и можно.