Для программного определения строки подключения в которой вы работаете достаточно вызвать функцию
1 |
СтрокаСоединенияИнформационнойБазы() |
Для файловой базы в параметрах подключение будет с использованием File, для клиент-серверного подключения связка Srvr/Ref.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
Соединения = ПолучитьСоединенияИнформационнойБазы(); Для каждого СоединениеИнформационнойБазы Из Соединения Цикл Если ПустаяСтрока(ИмяПользователя()) Тогда Продолжить; КонецЕсли; Если СоединениеИнформационнойБазы.Пользователь.Имя = ИмяПользователя() И СоединениеИнформационнойБазы.ИмяПриложения="1CV8" Тогда Если Лев(СтрокаСоединенияИнформационнойБазы(),5)="File=" Тогда ФайловыйВариант = Истина; ИмяСервераИБ=""; ИмяБазы = ""; Иначе ФайловыйВариант = Ложь; ПозицияРазделителя = Найти(СтрокаСоединенияИнформационнойБазы(),";"); ИмяКластера= Сред(СтрокаСоединенияИнформационнойБазы(),7, ПозицияРазделителя-8); ОписаниеИБ.Вставить("ИмяСервераИБ",ИмяСервераИБ); ИмяИнформационнойБазы = Сред(СтрокаСоединенияИнформационнойБазы(),ПозицияРазделителя+5,СтрДлина(СтрокаСоединенияИнформационнойБазы())-ПозицияРазделителя-5); ОписаниеИБ.Вставить("ИмяИнформационнойБазы",СтрЗаменить(ИмяИнформационнойБазы,"""","")); ИнформационнаяБаза = ОписаниеИБ.ИмяИнформационнойБазы; Пользователь = ИмяПользователя(); КонецЕсли; Прервать; КонецЕсли; КонецЦикла; Соединитель = Новый COMОбъект("V81.COMConnector"); АгентСервера = Соединитель.ConnectAgent(ИмяКластера); КластерыСерверов = АгентСервера.GetClusters().Выгрузить(); ИмяСервераИБВРег = ВРег(ИмяКластера); Для Каждого Кластер Из КластерыСерверов Цикл Если ВРег(Кластер.HostName) = ИмяСервераИБВРег Тогда СерверИнформационнойБазы = Кластер; Прервать; КонецЕсли; КонецЦикла; АгентСервера.Authenticate(СерверИнформационнойБазы,АдминистраторКластера,ПарольАдминистратораКластера ); ПроцессыCOM = АгентСервера.GetWorkingProcesses(СерверИнформационнойБазы); РабочиеПроцессы = ПроцессыCOM.Выгрузить(); РабочийПроцесс = РабочиеПроцессы[0]; СписокСоединений = РабочиеПроцессы; СоединениеСРабочимПроцессом = Соединитель.ConnectWorkingProcess( РабочийПроцесс.HostName + ":" + Формат(РабочийПроцесс.MainPort, "ЧГ=")); СоединениеСРабочимПроцессом.AddAuthentication(Пользователь,ПарольПользователя); // Получение списка информационных баз ИнформационныеБазы = СоединениеСРабочимПроцессом.GetInfoBases().Выгрузить(); // Поиск информационной базы с требуемыми параметрами подключения ИмяИнформационнойБазыВРег = ВРег(ИмяИнформационнойБазы); Для Каждого ИБ Из ИнформационныеБазы Цикл // Если информационная база найдена Если ВРег(ИБ.Name) = ВРег(ИмяИнформационнойБазы) Тогда // Запомнить информационную базу и прекратить поиск ИнформационнаяБаза = ИБ.Name; Прервать; КонецЕсли; КонецЦикла; ИнформационныеБазы = СоединениеСРабочимПроцессом.GetInfoBases().Выгрузить(); Для Каждого ИБ Из ИнформационныеБазы Цикл // Если информационная база найдена Если ВРег(ИБ.Name) = ВРег(ИмяИнформационнойБазы) Тогда //р= СоединениеСРабочимПроцессом.Connect(ИБ,"тест",""); Для шаг = 0 по СписокСоединений.Количество()-1 Цикл // ф=Соединитель.ConnectWorkingProcess(СписокСоединений[шаг].HostName + ":" + Формат(СписокСоединений[шаг].MainPort, "ЧГ=")); Попытка ф.AddAuthentication(Пользователь,ПарольПользователя);Исключение КонецПопытки; Соединения = ф.GetInfoBaseConnections(ИБ).Выгрузить(); Для Каждого соед Из Соединения Цикл Если соед.AppID="SrvrConsole" Тогда Продолжить; КонецЕсли; Если соед.AppID="COMConsole" Тогда Продолжить; КонецЕсли; Если соед.AppID="Designer" Тогда Продолжить; КонецЕсли; НоваяСессия = Сессии.Добавить(); НоваяСессия.Юзер = соед.UserName; НоваяСессия.Комп = Соед.HostName; НоваяСессия.Сессия1С = соед.ConnID; НоваяСессия.SPID = соед.dbProcInfo; КонецЦикла; КонецЦикла; //Соединения = СоединениеСРабочимПроцессом.GetInfoBaseConnections(ИБ).Выгрузить(); Прервать; КонецЕсли; КонецЦикла; |