Для подключения из 1С82 к 1С77 через OLE необходим путь к базе 1С77. Данный путь можно получить разными способами, как правило, заводится реквизит на форме, где администратор и прописывает данную настройку. Но можно пойти другим путем… Дать пользователю самому выбрать к какой из баз 1С77 подключиться. Базы пользователя 1С77 хранятся в реестре. Если процедуру подключения выполнять на клиенте, то мы получим список баз 1С77 с которыми работает текущий пользователь на локальном компьютере, если же процедуру выполнять в контексте сервера, то мы получим список баз 1С77 которые зарегистрированы у той учетной записи, под которой выполняется служба 1С:Сервер предприятий. Ниже пример кода получения списка баз 1С77 и организация выбора нужной базы.
&НаСервере
Функция ПолучитьСписокБазНаСервере()
Перем Параметры, Значения, Значение;
HKCU = 2147483649;
ПутьКлюча = «Software1C1Cv77.7Titles»;
Reg = ПолучитьCOMОбъект(«winmgmts:{impersonationLevel=impersonate}!\» +
ИмяКомпьютера() + »
ootdefault:StdRegProv»);
Reg.EnumValues(HKCU, ПутьКлюча, Параметры, Значения);
Базы1С = Новый Массив;
Для Каждого Параметр Из Параметры Цикл
Reg.GetStringValue(HKCU, ПутьКлюча, Параметр, Значение);
База1С = Новый Массив;
База1С.Добавить(Параметр);
База1С.Добавить(Значение);
Базы1С.Добавить(База1С);
КонецЦикла;
Возврат Базы1С;
КонецФункции
&НаКлиенте
Процедура База1СНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
Базы1С = ПолучитьСписокБазНаСервере();
Элемент.СписокВыбора.Очистить();
Для Каждого База1С Из Базы1С Цикл
Элемент.СписокВыбора.Добавить(База1С[0], База1С[1]);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура База1СОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Эл = Элемент.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение);
Объект.База1С = Эл.Представление;
Объект.База1С_Путь = Эл.Значение;
СтандартнаяОбработка = Ложь;
КонецПроцедуры





А вот еще способ получения списка баз от разработчиков 1с
// Процедура получает из реестра список зарегистрированных ИБ // Процедура ПолучитьСписокИБ() Попытка ScrptCtrl=Новый COMObject(«MSScriptControl.ScriptControl»); ScrptCtrl.Language=»vbscript»; ScrptCtrl.AddCode(» |Function Get1CV77Titles() | const HKEY_CURRENT_USER = &H80000001 | Set oReg=GetObject(«»winmgmts:{impersonationLevel=impersonate}!\. ootdefault:StdRegProv»») | strKeyPath = «»Software1C1Cv77.7Titles»» | 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); Название=Прав(СтрБазы,СтрДлина(СтрБазы)-Разд); НоваяСтрока = ТаблицаПути.Добавить(); НоваяСтрока.Имя = Название; НоваяСтрока.Путь = Путь; КонецЦикла; ТаблицаПути.Сортировать(«Имя»); КонецПроцедуры //ПолучитьСписокИБПоказать
Это тоже самое, только весь код получения завернут в VBS и возвращается строка с разделителями