Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Скрипт для копир. панелей инстр. конфигуратора (число прочтений - 2330 )
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Скрипт для копир. панелей инстр. конфигуратора
02. Июля 2008 :: 09:05
Печать  
Написание скрипта вызвано моей ленью. Скрипт предназначен для копирования настроек панелей инструментов, отображаемых в конфигураторе, из заданной ИБ во все остальные ИБ, существующие в списке баз 1С (даже если они никогда еще не открывались).

Параметры запуска скрипта:

CopyPanels.vbs БазаОткуда [БазаКуда]

БазаОткуда - ИБ, из которой берутся настройки панелей инструментов (писать в двойных кавычках)
БазаКуда - ИБ, в которую переносятся эти настройки (если не указана, то во все базы) (писать в двойных кавычках)

В ходе выполнения скрипта он сообщает, над какой базой в конкретный момент он извращается, по окончании выводит предупреждение.

Примеры строки запуска:

1) CopyPanels.vbs "НИ Торговля"
2) CopyPanels.vbs "НИ Торговля" "Новгородвтормет ЗиК"

[code]on error resume next

Set WshShell = WScript.CreateObject("WScript.Shell")

const HKEY_CURRENT_USER = &H80000001

If WScript.Arguments.Count Then
     If WScript.Arguments.Count>2 Then
           WScript.Echo "Количество параметров превышает необходимое!"
           WScript.Quit
     Else
           BaseFrom = WScript.Arguments(0)
           BaseTo = ""
           If  WScript.Arguments.Count=2 Then
                 BaseTo = WScript.Arguments(1)
           End If
     End If
Else
     WScript.Echo "Не задана база-источник!"
     WScript.Quit
End If

Set objReg = ")
intRes = objReg.EnumValues(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\Titles", ListBases, Types)

If IsArray(ListBases) Then
     i = 0
     For Each Param In ListBases
           If Types(i) = 1 Then
                 intRes = objReg.GetStringValue(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\Titles", Param, NameBase)
                 If (NameBase <> BaseFrom) and (NameBase <> "") Then
                       If (WScript.Arguments.Count = 1) or (NameBase = BaseTo) Then
                             WshShell.Popup "Обрабатываю базу: " & NameBase, 1
                             intRes = objReg.EnumKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase, ListKeys)
                             If intRes <> 0 Then
                                   intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase)
                                   intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config")
                                   intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem")
                             Else
                                   intRes = objReg.EnumKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config", ListKeys)
                                   If intRes <> 0 Then
                                         intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config")
                                         intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem")
                                   Else
                                         intRes = objReg.EnumKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem", ListKeys)
                                         If intRes <> 0 Then
                                               intResCreate = objReg.CreateKey(HKEY_CURRENT_USER, "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem")
                                         Else
                                               If IsArray(ListKeys) Then
                                                     For Each NameKey In ListKeys
                                                           DeleteKeys "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem\" & NameKey
                                                     Next
                                               End If
                                         End If
                                   End If
                             End If
                             CopyKeys "Software\1C\1Cv7\7.7\" & BaseFrom & "\Config\ToolbarSystem", "Software\1C\1Cv7\7.7\" & NameBase & "\Config\ToolbarSystem"
                       End If
                 End If
           End If
           i = i + 1
     Next
End If

WScript.Echo "Задача выполнена!"

Function DeleteKeys(strKey)
     intRes = objReg.EnumKey(HKEY_CURRENT_USER, strKey, NamesKeys)
     If IsArray(NamesKeys) Then
           For Each NameKey In NamesKeys
                 DeleteKeys strKey & "\" & NameKey
           Next
     End If
     intRes = objReg.DeleteKey(HKEY_CURRENT_USER, strKey)
End Function

Function CopyKeys(strKeyFrom,strKeyTo)
     intRes = objReg.EnumValues(HKEY_CURRENT_USER, strKeyFrom, NamesValues, TypesValues)
     If IsArray(NamesValues) Then
           i = 0
           For Each Param In NamesValues
                 If TypesValues(i) = 1 Then
                       intRes = objReg.GetStringValue(HKEY_CURRENT_USER, strKeyFrom, Param, Val)
                       intRes = objReg.SetStringValue(HKEY_CURRENT_USER, strKeyTo, Param, Val)
                 Elseif TypesValues(i) = 2 Then
                       intRes = objReg.GetExpandedStringValue(HKEY_CURRENT_USER, strKeyFrom, Param, Val)
                       intRes = objReg.SetExpandedStringValue(HKEY_CURRENT_USER, strKeyTo, Param, Val)
                 Elseif TypesValues(i) = 3 Then
                       intRes = objReg.GetBinaryValue(HKEY_CURRENT_USER, strKeyFrom, Param, Val)
                       intRes = objReg.SetBinaryValue(HKEY_CURRENT_USER, strKeyTo, Param, Val)
                 Elseif TypesValues(i) = 4 Then
                       intRes = objReg.GetDWORDValue(HKEY_CURRENT_USER, strKeyFrom, Param, Val)
                       intRes = objReg.SetDWORDValue(HKEY_CURRENT_USER, strKeyTo, Param, Val)
                 Elseif TypesValues(i) = 7 Then
                       intRes = objReg.GetMultiStringValue(HKEY_CURRENT_USER, strKeyFrom, Param, Val)
                       intRes = objReg.SetMultiStringValue(HKEY_CURRENT_USER, strKeyTo, Param, Val)
                 End If
                 i = i + 1
           Next
     End If
     intRes = objReg.EnumKey(HKEY_CURRENT_USER, strKeyFrom, NamesKeys)
     If IsArray(NamesKeys) Then
           For Each NameKey In NamesKeys
                 intRes = objReg.CreateKey(HKEY_CURRENT_USER, strKeyTo & "\" & NameKey)
                 CopyKeys strKeyFrom & "\" & NameKey, strKeyTo  & "\" & NameKey
           Next
     End If
End Function[/code]
  

CopyPanels_001.vbs ( 4 KB | Загрузки )
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Скрипт для копир. панелей инстр. конфигуратора
Ответ #1 - 02. Июля 2008 :: 09:09
Печать  
Надо было наверное в скрипты кинуть...  Нерешительный Модеры, перекиньте плиз.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать