Список подключенных баз в 7.7 не виден всем юзерам

Тема в разделе "Продукты 1C", создана пользователем fautwo, 15 янв 2012.

  1. fautwo

    fautwo Создатель

    Регистр.:
    19 авг 2011
    Сообщения:
    13
    Симпатии:
    10
    Есть 1С 7.7, конфигурации разные и их много, платформа одна.
    пользователей тоже много, список баз создаю в "Администраторе", остальные пользователи с правами админа не видят этого списка.
    Совсем не хочется вручную прописывать три десятка баз полсотне юзерам,
    подскажите пожалуйста, как сделать так чтобы все юзеры увидели единый список баз, созданный пользователю администратор ?
     
  2. puika

    puika

    Регистр.:
    25 ноя 2006
    Сообщения:
    262
    Симпатии:
    277
    В 7ке. все базы регятся в системном реестре компа. Вот от туда и выдирать.
    ветка, там пути и имя базы для выбора

    HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles делай рег - файл со списком баз и все

    в 8

    C:\Documents and Settings\user\Application Data\1C\1Cv81\ibases.v8i

    или Перейти по ссылке
     
    fautwo нравится это.
  3. puika

    puika

    Регистр.:
    25 ноя 2006
    Сообщения:
    262
    Симпатии:
    277
    Есть и скрипт

    скрипт позволяет раз и навсегда забыть где лежат базы 1С (v7.7)

    в зависимости от групп безопасности пользователя ему добавляются нужные базы 1С (v7.7), при необходимости редактируется их название на правильное
    Код:
    Option Explicit
    On Error Resume Next
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    const HKEY_CURRENT_USER = &H80000001
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim WshShell
    Dim strUserDN, objSysInfo, GroupObj, UserObj, strComputer
    Dim i, iGroup
    Dim strArrayUserGroups()
    Dim arrayBases
    Dim PathToListBases
    Dim oReg, iRes, arrayCurBases
    Dim strListBases
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'путь к списку баз 1С в реестре ()
    PathToListBases = "Software\1C\1Cv7\7.7\Titles"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'создаем массив известных баз с их путями
    Set arrayBases = CreateObject("Scripting.Dictionary")
    arrayBases.Add "Бухгалтерия АВТОСАЛОН", "I:\1C_Bases\Автосалон\v7\Бух\"
    arrayBases.Add "Бухгалтерия АВТОТЕХ", "I:\1C_Bases\Автотех\v7\Бух\"
    arrayBases.Add "Бухгалтерия АСКОМ", "I:\1C_Bases\Аском\v7\Бух\"
    arrayBases.Add "Бухгалтерия БАРС", "I:\1C_Bases\Барс\v7\Бух\"
    arrayBases.Add "Бухгалтерия ВЕК", "I:\1C_Bases\Век\v7\Бух\"
    arrayBases.Add "Бухгалтерия ВЕСНА", "I:\1C_Bases\Весна\v7\Бух\"
    arrayBases.Add "ЗиК АВТОСАЛОН", "I:\1C_Bases\Автосалон\v7\ЗиК\"
    arrayBases.Add "ЗиК АВТОТЕХ", "I:\1C_Bases\Автотех\v7\ЗиК\"
    arrayBases.Add "ЗиК АСКОМ", "I:\1C_Bases\Аском\v7\ЗиК\"
    arrayBases.Add "ЗиК БАРС", "I:\1C_Bases\Барс\v7\ЗиК\"
    arrayBases.Add "ЗиК ВЕК", "I:\1C_Bases\Век\v7\ЗиК\"
    arrayBases.Add "ЗиК ВЕСНА", "I:\1C_Bases\Весна\v7\ЗиК\"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'проверяем, правильное ли имя у существующей базы
    Function BaseNameValid(strBase)

    Dim strCurBase

    oReg.GetStringValue HKEY_CURRENT_USER,PathToListBases,arrayBases(strBase),strCurBase

    If strCurBase=strBase Then
    BaseNameValid = True
    Else
    BaseNameValid = False
    End If

    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'корректируем имя существующей базы, правильное значение берем из arrayBases
    Function CorrectBaseName(strBase)
    'функция избыточна, но оставлена для возможности расширения функциональности кода
    oReg.SetStringValue HKEY_CURRENT_USER,PathToListBases,arrayBases(strBase),strBase

    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'создаем базу в списке баз в реестре
    Function CreateBase (strBase)

    oReg.SetStringValue HKEY_CURRENT_USER,PathToListBases,arrayBases(strBase),strBase

    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'проверяем, добавлена ли переданная в параметре база
    Function BaseCreated (strBase)

    Dim i
    Dim UnderTestPath

    UnderTestPath = ""
    'получеам из массива баз нужный путь для проверки
    UnderTestPath = arrayBases(strBase)
    If instr(1,strListBases,arrayBases(strBase))=0 Then
    'если в списке баз нет текущей базы, возвращаем ложь
    BaseCreated = False
    Else
    'если в списке баз есть текущая база, то проверяем ее название,
    'при необходимости меняем его на взятое из arrayBases и после этого
    'возвращаем истину
    If BaseNameValid(strBase)=False Then
    CorrectBaseName(strBase)
    End If
    BaseCreated = True
    End If

    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'проверяем все базы по текущей группе и при необходимости создаем их
    Function AddBaseByGroup (strGroup)
    'тут с помощью кейса добавляем нужные базы нужным группам пользователей
    Select Case strGroup
    Case "АВТОСАЛОН (ВСЕ ШАРЫ)"
    If BaseCreated ("Бухгалтерия АВТОСАЛОН")=False Then
    'если база не создана, то создаем ее
    CreateBase ("Бухгалтерия АВТОСАЛОН")
    End If
    If BaseCreated ("ЗиК АВТОСАЛОН")=False Then
    'если база не создана, то создаем ее
    CreateBase ("ЗиК АВТОСАЛОН")
    End If
    End Select

    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objSysInfo = CreateObject("ADSystemInfo")

    strComputer = "."
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

    strUserDN = objSysInfo.userName
    Set UserObj = GetObject("LDAP://" & strUserDN)
    'начинаем создавать массив групп безобасности текущего пользователя
    iGroup = 0
    For Each GroupObj In UserObj.Groups
    iGroup = iGroup + 1
    Redim Preserve strArrayUserGroups(iGroup)
    strArrayUserGroups(iGroup) = Replace(GroupObj.Name, "CN=", "")
    Next


    'начинаем создание баз в зависимотсти от групп безопасности текущего пользователя
    For i = 1 To iGroup
    AddBaseByGroup strArrayUserGroups(i)
    Next
    'lamo4ok©
     
    fautwo нравится это.