Написал скриптик, для подключения баз юзерам. Задумка следующая - в скрипт передается в виде параметров имя сервера и базы а так же параметр отвечающий за то, будет ли выполнятся предварительно отчистка списка баз.
Скрипт вот:
'Скрипт AddSQLBase1C8.vbs
'Аффтар Ярик Киселев
'Скрипт добавляет 1С8 в список баз. Для работы нужно запустить скрипт с параметрами
'AddSQLBase1C8.vbs Параметр1 Параметр2 Параметр3 Параметр4 , - где:
' Параметр1 - имя сервера 1С8 (для не SQL-ной базы - путь к каталогу информационной базы)
' Параметр2 - имя базы на сервере (для не SQL-ной базы - наименование базы в списке)
' Параметр3 - Наименование базы в списке (обязательно латиницей)
' Параметр4 - Очистка списка баз (1 - отчистить, 2 - не отчищать)
Option Explicit
On Error Resume Next
Dim fso1, ts, txtStreamOut, Shell
Dim strBLFile
Dim strSearchStr
Dim strAppPath
Dim strSrvName
Dim strBaseName
Dim strBaseLabel
Dim strBaseListFolder, strBaseListPath
Dim iFlg
Dim nVar
Set Shell = CreateObject("WScript.Shell")
Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")
Err.Number = 0
'____ Получение параметров ________
strSrvName = WScript.Arguments(0)
If Err.Number <> 0 Then
nVar = MsgBox("Проверьте параметры или обратитесь к системному администратору", vbCritical, "Ошибка")
WScript.Quit(-1)
End If
strBaseName = WScript.Arguments(1)
If Err.Number <> 0 Then
nVar = MsgBox("Проверьте параметры или обратитесь к системному администратору", vbCritical, "Ошибка")
WScript.Quit(-1)
End If
strBaseLabel = WScript.Arguments(2)
If Err.Number <> 0 Then
nVar = MsgBox("Проверьте параметры или обратитесь к системному администратору", vbCritical, "Ошибка")
WScript.Quit(-1)
End If
iFlg = WScript.Arguments(3)
If Err.Number <> 0 Then
nVar = MsgBox("Проверьте параметры или обратитесь к системному администратору", vbCritical, "Ошибка")
WScript.Quit(-1)
End If
strAppPath = Shell.SpecialFolders("APPDATA")
strBaseListPath = strAppPath & "\1C\1Cv8\v8ib.lst" 'Устанавливаем путь к списку баз
If iFlg = 1 Then ' Проверка - нужно ли отчищать список баз
If fso1.FileExists (strBaseListPath) Then fso1.DeleteFile(strBaseListPath) 'Отчистка списка баз
End If
'подключение не скульной базы
If InStr(strSrvName,"\\") Then
If fso1.FileExists (strBaseListPath) Then
Set ts = fso1.OpenTextFile(strBaseListPath, 1, True)
strBLFile = ts.ReadAll
ts.Close
strSearchStr = "File=" & Chr(34) & strSrvName & Chr(34)
If InStr(strBLFile,strSearchStr) = 0 Then 'Проверка на наличие базы в списке баз
Set ts = fso1.OpenTextFile(strBaseListPath,8) 'Подключение базы
ts.WriteLine "[" & strBaseLabel & "]"
ts.WriteLine "Connect=File=" & Chr(34) & strSrvName & Chr(34) & ";"
ts.WriteLine "ID=69809a06-e249-4a73-96ab-bf4ef9b7ec4a"
ts.WriteLine "OrderInList=2"
ts.WriteLine "Folder=/"
ts.WriteLine "OrderInTree=2" & Chr(10)
ts.Close
End If
Else
strBaseListFolder = strAppPath & "\1C" 'Подключение базы после отчистки списка
If Not fso1.FolderExists(strBaseListFolder) Then fso1.CreateFolder(strBaseListFolder)
strBaseListFolder = strAppPath & "\1C\1Cv8"
If Not fso1.FolderExists(strBaseListFolder) Then fso1.CreateFolder(strBaseListFolder)
Set ts = fso1.CreateTextFile(strBaseListPath,8)
ts.WriteLine Chr(239) & Chr(187) & Chr(191)
ts.WriteLine "[" & strBaseLabel & "]"
ts.WriteLine "Connect=File=" & Chr(34) & strSrvName & Chr(34) & ";"
ts.WriteLine "ID=69809a06-e249-4a73-96ab-bf4ef9b7ec4a"
ts.WriteLine "OrderInList=2"
ts.WriteLine "Folder=/"
ts.WriteLine "OrderInTree=2" & Chr(10)
ts.Close
End If
WScript.Sleep (1000)
Set fso1 = Nothing
WScript.Quit(0)
End If
''подключение скульной базы
If fso1.FileExists (strBaseListPath) Then
Set ts = fso1.OpenTextFile(strBaseListPath, 1, True)
strBLFile = ts.ReadAll
ts.Close 'Проверка на наличие базы в списке баз
strSearchStr = "Srvr=" & Chr(34) & strSrvName & Chr(34) & ";Ref=" & Chr(34) & strBaseName & Chr(34)
If InStr(strBLFile,strSearchStr) = 0 Then 'Подключение базы
Set ts = fso1.OpenTextFile(strBaseListPath,8)
ts.WriteLine "[" & strBaseLabel & "]"
ts.WriteLine "Connect=Srvr=" & Chr(34) & strSrvName & Chr(34) & ";Ref=" & Chr(34) & strBaseName & Chr(34) & ";"
ts.WriteLine "ID=609255fb-7001-41d7-a2e3-cb072b9844a1"
ts.WriteLine "OrderInList=1"
ts.WriteLine "Folder=/"
ts.WriteLine "OrderInTree=1" & Chr(10)
ts.Close
End If
Else
strBaseListFolder = strAppPath & "\1C" 'Подключение базы после отчистки списка
If Not fso1.FolderExists(strBaseListFolder) Then fso1.CreateFolder(strBaseListFolder)
strBaseListFolder = strAppPath & "\1C\1Cv8"
If Not fso1.FolderExists(strBaseListFolder) Then fso1.CreateFolder(strBaseListFolder)
Set ts = fso1.CreateTextFile(strBaseListPath,8)
ts.WriteLine Chr(239) & Chr(187) & Chr(191)
ts.WriteLine "[" & strBaseLabel & "]"
ts.WriteLine "Connect=Srvr=" & Chr(34) & strSrvName & Chr(34) & ";Ref=" & Chr(34) & strBaseName & Chr(34) & ";"
ts.WriteLine "ID=609255fb-7001-41d7-a2e3-cb072b9844a1"
ts.WriteLine "OrderInList=1"
ts.WriteLine "Folder=/"
ts.WriteLine "OrderInTree=1" & Chr(10)
ts.Close
End If
WScript.Sleep (1000)
Set fso1 = Nothing
WScript.Quit(0)
В GPO 4 раза вызывается данный скрипт - подключается 4 базы. Проблема следующая - на терминальных станциях скрипт работает всегда, на моем компе - всегда, на компах юзеров то работает нормально, то подключает только 1-2 базы, то не срабатывает совсем. Как найти откуда ноги растут у трабла? Где искать?
Ответить
|