Написание скрипта вызвано моей ленью. Скрипт предназначен для копирования настроек панелей инструментов, отображаемых в конфигураторе, из заданной ИБ во все остальные ИБ, существующие в списке баз 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]
|