Получение списка зарегистрированных на текущем компьютере баз 1С Предприятие 1Cv7 Код 1C v 7.x // Процедура получает из реестра список зарегистрированных ИБ 7.7
Процедура ПолучитьСписокИБ()
Попытка
ScrptCtrl=Новый COMObject("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode("
|Function Get1CV77Titles ()
| const HKEY_CURRENT_USER = &H80000001
| Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")
| strKeyPath = ""Software\1C\1Cv7\7.7\Titles ""
| oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
| strInfo=vbNullString
| Get1CV77Titles = strInfo
| On Error Resume Next
| For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & vbTab & Value & vbCrLf
| Next
| Get1CV77Titles = strInfo
|End Function
|");
Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles "));
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
ТаблицаПути.Очистить();
Если НЕ ЗначениеЗаполнено(Текст) Тогда
Возврат;
КонецЕсли;
Для Ном=1 По СтрЧислоСтрок(Текст) Цикл
СтрБазы=СтрПолучитьСтроку(Текст,Ном);
Разд=Найти(СтрБазы,Символы.Таб);
Путь=Лев(СтрБазы,Разд-1);
Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд);
НоваяСтрока = ТаблицаПути.Добавить();
НоваяСтрока.Имя = Название;
НоваяСтрока.Путь = Путь;
КонецЦикла;
ТаблицаПути.Сортировать("Имя");
КонецПроцедуры //ПолучитьСписокИБ
Функция возвращает список значений содержащий список баз установленных на данном компьютаре. В котором в качестве значения указывается путь до базы, а в представлении название базы, так как она отображается в окне выбора баз при запуске 1С. Если баз не обнаруженно то возвращает строку "Error"
Код 1C v 7.x
функция сзПолучитьСписокБаз()
попытка
// Создаем объект Microsoft Script Control.
олеСкрипт = создатьобъект("MSScriptControl.ScriptControl");
// Устанавливаем в качестве языка для выполнения сценариев Visual Basic
олеСкрипт.Language = "VBScript";
// Формируем код на VB.
// В принципе он все делает. Создает объект
// Windows Management Instrumentation и уже через него
// получает значение ключи реестра преобразовывая данные
// в строку.
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
| ""\root\default:StdRegProv"")
| PathKey = ""Software\1C\1Cv7\7.7\Titles ""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = ""{""""СписокЗначений"""",{""
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & ""{{""""Строка"""","""""" &_
| Arr(x) & """"""},"""""" & replace(Value, """""""", """""""""""") &_
| """""",""""0""""}""
| if x <> UBound(Arr) then Answer = Answer & "",""
| next
| Answer = Answer & ""}}""
| strGetListBase = Answer
|end function";
// Добавляем наш код.
олеСкрипт.AddCode(стрКод);
// Вызываем его на выполнение, и пытаемся из полученного результата
// сформировать список значений.
Ответ = значениеизстроки(олеСкрипт.Run("strGetListBase"));
// Отсортируем список по Представлению баз
Ответ.СортироватьПоПредставлению();
исключение
// Если произошла ошибка. Значит вернем "Error".
Ответ = "Error";
конецпопытки;
возврат Ответ;
конецфункции
Еще примеры! Получение списка баз 1С 7.7 из реестра Категория:
Полезные, Универсальные Функции Быстрый перенос списка баз с одного компьютера на другой Для 8.1 :
1. Список баз 8.1 можно сохранять в файл.Для этого правой кнопкой мыши по корневому элементу "
Информационные базы ", далее "
Сохранить ссылку в файл ".
2. Получаем файл с расширением
v8i , это текстовый файл в кодировке UTF-8.
Если необходимо, то при помощи любого текстового редактора в файле можно провести замену, например заменить имя сервера приложений и т.д.
3. Далее можно загрузить этот файл со списком баз (только предварительно очистите существующий список баз) щелкнув двойным щелчком на нем.
или - Как прописать список баз всем пользователям?
1. Для начала формируем список баз у одного пользователя вручную.
2. Данный список хранится в файле
c:\Documents and Settings\[Имя Пользователя]\Application Data\1C\1CEStart\ibases.v8i
3. Копируем этот файл и файл 1CEStart.cfg всем остальным пользователям по указанному пути.
Для 7.7 :
На компьютере из которого нужно выгрузить список баз запускаем:
Код DOS Batch File regedit /ea 1СBase.reg HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles
В результате получается reg файл 1СBase.reg со списком баз, запускаем его на другом компьютере, запускаем 1С и базы уже занесены
Категория:
Администрирование Получение списка баз 1С 7.7 из реестра Ниже приведено несколько способов получения списка баз 1С 7.7 из реестра:
Код получения списка баз 1С 7.7 из 8.х
Код 1C v 8.х функция сзПолучитьСписокБаз()
попытка
олеСкрипт = новый COMОбъект("MSScriptControl.ScriptControl");
олеСкрипт.Language = "VBScript";
стрКод =
"function strGetListBase()
| const RootKey = &H80000001
| set Reg = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
| ""\root\default:StdRegProv"")
| PathKey = ""Software\1C\1Cv7\7.7\Titles ""
| Reg.EnumValues RootKey, PathKey, Arr
| Answer = ""{""""#"""",4772b3b4-f4a3-49c0-a1a5-8cb5961511a3,"" & chr(10)
| Answer = Answer & ""{3,1e512aab-1b41-4ef6-9375-f0137be9dd91,0,0,"" & chr(10)
| Answer = Answer & ""{"" & (UBound(Arr) + 1) & "","" & chr(10)
| for x = LBound(Arr) to UBound(Arr)
| call Reg.GetStringValue(RootKey, PathKey, Arr(x), Value)
| Answer = Answer & ""{1e512aab-1b41-4ef6-9375-f0137be9dd91,"" & chr(10) &_
| ""{"""""" & replace(Value, """""""", """""""""""") & """""",0,"" &_
| chr(10) & ""{""""S"""","""""" & Arr(x)& """"""},"" &_
| chr(10) & ""{3,0,"" & chr(10) & ""{0},"""""""",-1,-1,0,0}"" &_
| chr(10) & ""}"" & chr(10) & ""}""
| if x <> UBound(Arr) then Answer = Answer & "",""
| Answer = Answer & chr(10)
| next
| Answer = Answer & ""},"" & chr(10) & ""{""""Pattern""""}"" & chr(10) &_
| ""}"" & chr(10) & ""}""
| strGetListBase = Answer
|end function";
олеСкрипт.AddCode(стрКод);
стрОтвет = олеСкрипт.Run("strGetListBase");
Ответ = ЗначениеИзСтрокиВнутр(стрОтвет);
Ответ.СортироватьПоПредставлению();
исключение
Ответ = новый СписокЗначений;
Ответ.Добавить("Базы 1С:Передприятия 7.7 не обнаруженны!");
конецпопытки;
возврат Ответ;
конецфункции
Код для 1С 7.7
Код 1C v 7.x
Функция ПолучитьСписокБаз1()
Перем Value,arrValues;
Scr = CreateObject("MSScriptControl.ScriptControl");
Scr.Language = "vbscript";
Scr.Timeout=-1;
HKEY_CURRENT_USER = 2147483649;
strKeyPath = "Software\1C\1Cv7\7.7\Titles ";
Locator=СоздатьОбъект("WbemScripting.SWbemLocator");
ServiceDef=Locator.ConnectServer(".","root\default");
oReg = ServiceDef.Get("StdRegProv");
Dict=СоздатьОбъект("Scripting.Dictionary");
Scr.AddObject("Dict",Dict);
Scr.AddObject("oReg",oReg);
Scr.ExecuteStatement("dim arrValues,Value:");
Scr.ExecuteStatement("oReg.EnumValues "+HKEY_CURRENT_USER+","""+strKeyPath+""",arrValues:");
Scr.ExecuteStatement("for i=lbound(arrValues) to ubound(arrValues):Dict.add ""pj"" & i, arrValues(i):next");
ТЗБаз=СоздатьОбъект("ТаблицаЗначений");
ТЗБаз.НоваяКолонка("Путь");
ТЗБаз.НоваяКолонка("Описание");
Для к=0 По Dict.count Цикл
Д=Dict.Item("pj"+к);
Scr.ExecuteStatement("oReg.GetStringValue "+HKEY_CURRENT_USER+","""+strKeyPath+""","""+Д+""",Value");
ТЗБаз.НоваяСтрока();
ТЗБаз.Путь = Д;
ТЗБаз.Описание = Scr.eval("Value");
КонецЦикла;
//Посмотрим что в ТЗ
//ТЗБаз.ВыбратьСтроку();
Возврат ТЗБаз;
КонецФункции
Процедура ПолучитьСписокБаз2()
Попытка
scrptCtrl=createobject("MSScriptControl.ScriptControl");
scrptCtrl.language="vbscript";
scrptCtrl.addcode("Function Get1CV77Titles ()
|const HKEY_CURRENT_USER = &H80000001
|Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\."" &_
|""\root\default:StdRegProv"")
|strKeyPath = ""Software\1C\1Cv7\7.7\Titles ""
|oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
|strInfo=vbNullString
|For i = LBound(arrValues) To UBound(arrValues)
| call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
| strInfo=strInfo & arrValues(i) & ""="" & Value & vbCrLF
|Next
|Get1CV77Titles = strInfo
|End Function");
Сообщить(scrptCtrl.run("Get1CV77Titles "));
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
<Сообщил Gloom>
Процедура ПолучитьСписокБаз3()
Ключ="HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles ";
ИмяКаталога=СокрЛП(КаталогПользователя());
ИмяБазы=СокрЛП(каталогИБ());
Если прав(ИмяКаталога,1)<>"\" Тогда ИмяКаталога=ИмяКаталога+"\" КонецЕсли;
Если прав(ИмяБазы,1)<>"\" Тогда ИмяБазы=ИмяБазы+"\" КонецЕсли;
ИмяБазыСтр=Симв(34)+СтрЗаменить(ИмяБазы,"\","\\")+Симв(34);
ИмяФайла="USER.TXT";
Команда="Regedit /ea "+Симв(34)+ИмяКаталога+ИмяФайла+Симв(34)+" "+Симв(34)+Ключ+Симв(34);
КомандаСистемы(Команда);
Текст=СоздатьОбъект("Текст");
Текст.КодоваяСтраница(0);
Текст.Открыть(ИмяКаталога+ИмяФайла);
Текст.Показать();
Стр=""; Нашли=0;
Для сч=1 по Текст.КоличествоСтрок() Цикл
Стр=СокрЛП(Текст.ПолучитьСтроку(сч));
Сообщить(Стр);
Если Найти(стр,ИмяБазыСтр)<>0 Тогда
Нашли=1;
прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Категория:
COM-объекты, WMI, WSH Некоторые полезные настройки при работе с УРИБ. Настройки в системном реестре:
Путь к 1С:
HKEY_LOCAL_MACHINE 092;SOFTWARE 092;Microsoft 092;Windows 092;CurrentVersion 092;App Paths 092;1Cv7s.exe
Заголовки ИБ:
HKEY_LOCAL_MACHINE 092;Software 092;1C 092;1Cv7 092;7.7 092;
Titles
Пути к каталогам загрузки/выгрузки:
HKEY_CURRENT_USER 092;Software 092;1C 092;1Cv7 092;7.7 092;Заголовок ИБ 092;Config 092;Upload/Download directories
Чтобы нормально работало по почте:
HKEY_LOCAL_MACHINE 092;Software 092;Microsoft 092;Windows Messaging Subsystem 092;MAPI = '1'
Если по умолчанию OutlookExpress:
HKEY_LOCAL_MACHINE 092;Software 092;Clients 092;Mail 092;Outlook Express 092;DLLPath = sysRoot+' 092;OUTLOOK EXPRESS 092;MSOE.DLL'
Если по умолчанию TheBat!:
HKEY_LOCAL_MACHINE 092;Software 092;Clients 092;Mail 092;The Bat! 092;DLLPath = sysRoot+' 092;THE BAT! 092;TBMapi.DLL'
Информация в файле 1SDBSET.DBF
DBSIGN - Код базы (как он отображается в настройках ЦБ/ПБ)
DBDESCR - Наименование базы
DBSTATUS - "M" - Текущая, "P" - Центральная, "C" - Перифирийная, "N" - никакая
или неинициализированная (т.е. не было первой выгрузки, статус при создании новой)
DBFNCP - имя файла загрузки из ЦБ в ПБ
DBFNPC - имя файла загрузки из ПБ в ЦБ
DBFAUTO - признак автообмена
EMAILFLGS - признак использования почты
EMAIL - почтовый адрес
Категория:
Администрирование