Имя: Пароль:
1C
1С v8
vbs для загрузки информационной базы
0 dainastar
 
20.06.12
08:19
У кого-нибудь есть  vbs для автоматической загрузки базы. Поделитесь пожалуйста.
1 dainastar
 
20.06.12
08:20
Я нашала скрипт для 1С 7.7, пыталась переделать, но не работает. Вот он:

Set objArgs = WScript.Arguments
if (objArgs.Count < 5) then
   WScript.Quit
end if

ArcPath = " "       ' Путь к файлу архива
Database = " "      ' Путь к базе данных 1С
User     = " "      ' Имя пользователя 1С
Password = " "      ' Пароль пользователя 1С
Prefix   = " "      ' Префикс имени файла архива

LogDir   = " "

if (objArgs.Count >= 5) then
   LogDir   = objArgs(5)
end if

' Восстановить данные - 2, загрузить - 4
Action   = 4
   
' Запуск и активизация 1С
Program  = "C:\Program Files (x86)\1cv82\8.2.15.310\bin\1cv8.exe"

Caption  = "Конфигуратор"    ' Заголовок окна которое должно получать нажатия клавиш
   
' Временные промежутки в миллисекундах
WaitRun  = 20000        ' Время на загрузку конфигуратора
KeySpeed = 300            ' Промежутки между нажатиями клавиш
   
' Возвращает число даты или месяца с начальным нулем
' (для м-цев с января по сентябрь)
Function GetWithZero(pNum, pDigs)
   sNumber = "" & pNum
   If (Len(sNumber) < pDigs) then
       GetWithZero = "0" & pNum
   else
       GetWithZero = sNumber
   end if
End Function

' Возвращает имя файла (префикс плюс дата). формирует его из даты, но может быть любой
Function GetArcName(pPref)
GetArcName = pPref & Year(Date) & GetWithZero(Month(Date), 2) & GetWithZero(Day(Date), 2)
End Function



' Пути к другим файлам и формирование имени файла архива
'LogFile  = LogDir & GetArcName(prefix) & ".log"
LogFile  = LogDir & GetArcName(dump2Ipl) & ".log"
   

'=======================================================================================================

Sub WriteLog(Message)
   Dim FSObj, Log
   Set FSObj = CreateObject("Scripting.FileSystemObject")
   Log = ""
   On Error Resume Next
   Set Log = FSObj.OpenTextFile(LogFile, 8, True)
   Log.WriteLine Message
   Log.Close
   FSObj = ""
End Sub
 
Sub SendKeystokes(Keys, Rep)
   For i = 1 To Rep
       WshShell.SendKeys Keys
       WriteLog "    Посланы клавиши: " & Keys
       WScript.Sleep KeySpeed
   Next    
End Sub

WriteLog "---------------------------------------------------"
WriteLog "Начало работы " & Date & " " & Time  
   
ArcFile = ArcPath & GetArcName(dump2Ipl) & ".dt"

Set FSObj = CreateObject("Scripting.FileSystemObject")
If FSObj.FileExists(ArcFile) Then
   WriteLog "   Файл архива существует: " & ArcFile
   FSObj = ""
Else
   WriteLog "    Файл архива " & ArcFile & " не найден!"
   WriteLog "Окончание работы " & Date & " " & Time
   FSObj = ""
   WScript.Quit -1
End If


set WshShell = WScript.CreateObject("WScript.Shell")
Res = WshShell.AppActivate(Caption)

' Закроем все окна конфигураторов, чтобы ненароком не загрузить
' данные в другую (возможно рабочую) конфигурацию

iTry = 0
iAllTries = 0
While (Res)
   ' Выход из конфигуратора !!! // WM, 2004
   iTry = iTry + 1
   iAllTries = iAllTries + 1
   WriteLog "    Попытка закрыть окно конфигуратора:"
   SendKeystokes "%", 1

   ' Если было больше 20 попыток закрыть окно конфигуратора
   ' то передвинемся на один пункт меню вправо, так как в конф-ре
   ' открыты окна и скрипт постоянно выбирает в меню пункт
   ' "Следующее окно". А передвинувшись на один пункт вправо - получим
   ' "Закрыть"
   If iTry > 3 Then
       SendKeystokes "{RIGHT}", 1
       iTry = 0
   End If

   SendKeystokes "~", 1
   SendKeystokes "{UP}", 1
   SendKeystokes "~", 1

   WScript.Sleep 1500
   Res = WshShell.AppActivate(Caption)

   If iAllTries > 50 Then
       WriteLog "    Не удалось закрыть уже открытый конфигуратор ! Возможно Вы забыли сохранить изменения и выйти!"
       WriteLog "Окончание работы " & Date & " " & Time
       wscript.Quit
   End If
WEnd


If not Res Then
   Res = WshShell.Run("" & Program & " CONFIG" & " /d" & Database & " /n" & User & " /p" + Password, 1)
   If Res = 0 Then
       WriteLog "    Запущена программа: " & Program & " CONFIG" & " /d" & Database & " /n" & User & " /p********"
   Else
       WriteLog "    Не удалось запустить программу: " & Program & " CONFIG" & " /d" & Database & " /n" & User & " /p********"
       WriteLog "Окончание работы " & Date & " " & Time
       WshShell = ""
       WScript.Quit -2
   End If
       WriteLog "    Ожидание загрузки программы: " & WaitRun & " миллисекунд"        
   WScript.Sleep WaitRun
   Res = WshShell.AppActivate(Caption)
End If    

If Res Then
   WshShell.SendKeys "" ' Это даст фокус окну, если оно его успело потерять
   WshShell.AppActivate(Caption)
   WScript.Sleep 500
   WriteLog "    Активизировано окно: " & Caption
       
   SendKeystokes "%", 1
   SendKeystokes "{RIGHT}", 3
   SendKeystokes "~", 1
   SendKeystokes "{DOWN}", Action
   SendKeystokes "~", 1
   SendKeystokes ArcFile, 1
   SendKeystokes "{TAB}", 2
   SendKeystokes "~", 2
       
   If Action = 4 Then
       WriteLog "    Начата загрузка данных " & Date & " " & Time
       SendKeystokes "~", 1
       SendKeystokes "%{F4}", 1
       
       Res = WshShell.AppActivate(Caption)
       While Res
           WScript.Sleep 100
           Res = WshShell.AppActivate(Caption)
       WEnd

       ' Выход из конфигуратора !!! // WM, 2004
       WriteLog "    Закрыл окно : " & Caption
       SendKeystokes "%", 1
       SendKeystokes "~", 1
       SendKeystokes "{UP}", 1
       SendKeystokes "~", 1

   End If
Else
   WriteLog "    Не удалось активизировать окно: " & Caption
End If
   
WriteLog "Окончание работы " & Date & " " & Time
WshShell = ""
2 Мимохожий Однако
 
20.06.12
08:22
ОФФ: А для 1С6.0 случайно нет? Вдруг подойдет...
3 Галахад
 
гуру
20.06.12
08:24
(0) Гм, а зачем вообще базу автоматически загружать?
4 dainastar
 
20.06.12
08:29
После выгрузки некоторые базы получаются испорченными, поэтому чтобы хранить только рабочие выгрузки, хотим проверить, что загружается
5 dainastar
 
20.06.12
08:32
(2) очень смешно. Я со скриптом сталкиваюсь первый раз, но начальство наседает и не знаю что делать
6 Мимохожий Однако
 
20.06.12
08:33
(5)а мне не смешно. Тема V8, а скрипт V7. Или каша  в голове или тремор в руках. ИМХО.
7 dainastar
 
20.06.12
08:36
Мне нужен скрипт для v8, но для него не нашла в интернете, есть только для V7. Поэтому я думала что возможно его переделать и он будет работать и для v8. Но у меня не получается переделать, потому что язык vbs пока знаю на "2"
8 Галахад
 
гуру
20.06.12
08:37
(4) Гм. Просто копируйте 1CD файл целиком, если у вас файловая.
9 dainastar
 
20.06.12
08:38
Вариант, но начальство хочет, чтобы все происходило автоматически
10 Галахад
 
гуру
20.06.12
08:39
(9) Автоматически копируйте. :0)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший