Имя: Пароль:
1C
 
OLE - открываю базу 7.7 SQL
0 AntonU
 
14.09.06
17:08
v77=Новый COMОбъект ("V77.Application");
Так можно?

или надо V77s.Application ?
1 vde69
 
14.09.06
17:09
можно
2 AntonU
 
14.09.06
17:10
а в чем разница?
3 vde69
 
14.09.06
17:11
(2) на память не помню, чего-то с использованием компонетов платформы связано
4 АП
 
14.09.06
17:41
Функция ИнитОЛЕ()
   Соединение77 = Неопределено;
   КаталогБД = "D:\где то тут база";
   
   Попытка
       Соединение77 = Новый COMОбъект("V77.Application");
       Если Не Соединение77.Initialize(Соединение77.RMTrade, "/d"""+КаталогБД+""""+" /nSystem /psystem","NO_SPLASH_SHOW") Тогда
           Соединение77 = Новый COMОбъект("V77S.Application");
           Если Не Соединение77.Initialize(Соединение77.RMTrade, "/d"""+КаталогБД+""""+" /nSystem /psystem","NO_SPLASH_SHOW") Тогда
               Соединение77 = Новый COMОбъект("V77L.Application");
               Если Не Соединение77.Initialize(Соединение77.RMTrade, "/d"""+КаталогБД+""""+" /nSystem /psystem","NO_SPLASH_SHOW") Тогда
                   Соединение77 = Новый COMОбъект("V77Enterprise.Application");
                   Если Не Соединение77.Initialize(Соединение77.RMTrade, "/d"""+КаталогБД+""""+" /nSystem /psystem","NO_SPLASH_SHOW") Тогда
                       Соединение77 = Новый COMОбъект("V77M.Application");
                       Если Не Соединение77.Initialize(Соединение77.RMTrade, "/d"""+КаталогБД+""""+" /nSystem /psystem","NO_SPLASH_SHOW") Тогда
                           Предупреждение("Ошибка открытия информационной базы 7.7!");
                           Соединение77 = Неопределено;
                           Возврат Ложь;
                       КонецЕсли;
                   КонецЕсли;
               КонецЕсли;
           КонецЕсли;
       КонецЕсли;
   Исключение
       Предупреждение("Ошибка открытия информационной базы 7.7!");
       Соединение77 = Неопределено;
       Возврат Ложь;
   КонецПопытки;
   
   Возврат Истина;
КонецФункции // ИнитОЛЕ()
5 vde69
 
14.09.06
17:47
(4) круть.... даже не знаю, то-ли восхищаться, то-ли смеяться...

универсализм вроде достигнут, но ведь реально в одной сети используеться один дистрибутив и устанавливаеться с одинаковыми настройками.... по крайне мере я такой подход использовать не буду, если уж не соединилось то пусть админы установят 1с везде одинаково...
6 АП
 
14.09.06
17:51
везет, когда одна
а если несколько? а если уйма филиалов, где могут быть разные
а так вытащил на форму КаталогБД, имя, пароль (при необходимости)
и юзаешь не думая
7 vde69
 
14.09.06
17:53
(6) мнение имеет право на жизнь, добавил в БЗ
8 YoungMan
 
14.09.06
18:06
А на мой вкус так лучше:
Функция Подключение (сПуть, сПользователь, сПароль) Экспорт

   мПодСистемы = Новый Массив;
   мПодСистемы.Добавить("V77.Application");
   мПодСистемы.Добавить("V1CEnterprise.Application");
   мПодСистемы.Добавить("V77S.Application");
   мПодСистемы.Добавить("V77M.Application");
   мПодСистемы.Добавить("V77L.Application");
                       
   сСообщениеОбОшибке = "";
   Для каждого сПодСистема Из мПодСистемы Цикл
       
       Попытка        
           
           ОдинС77 = Новый COMОбъект(сПодСистема);
           
           //Формирование строки соединения
           сСтрокаСоединения = "";
           
           Если Не(сПуть = Неопределено ИЛИ СокрЛП(сПуть) = "") Тогда            
               сСтрокаСоединения = "/D" + Символ(34) +  СокрЛП(сПуть) + Символ(34);
           КонецЕсли;
           
           Если сПользователь = Неопределено ИЛИ СокрЛП(сПользователь) = "" Тогда
               сСтрокаСоединения = сСтрокаСоединения + " /NUserName /PPassword";
           Иначе
               сСтрокаСоединения = сСтрокаСоединения + " /N" + Символ(34) + СокрЛП(сПользователь) + Символ(34)
               + " /P" + Символ(34) + СокрЛП(сПароль)+ Символ(34);
           КонецЕсли;
           
           //Попытка соединения с 1С:Предприятие 7.7
           Открыта = ОдинС77.Initialize(ОдинС77.RMTrade, сСтрокаСоединения, "");
           Если Открыта = Ложь Тогда              
               ОдинС77 = Неопределено;
               сСообщениеОбОшибке = сСообщениеОбОшибке + "Программный идентификатор:" + сПодСистема + "Ошибка: Подключение не установлено." + Символы.ПС;
           Иначе                                
               Возврат ОдинС77;
           КонецЕсли            
           
       Исключение
           сСообщениеОбОшибке = сСообщениеОбОшибке + "Программный идентификатор:" + сПодСистема + "Ошибка: Программный идентификатор не зарегистрирован." + Символы.ПС;        
       КонецПопытки;        
   
   КонецЦикла;
   
   Предупреждение(сСообщениеОбОшибке)

КонецФункции
9 АП
 
15.09.06
09:53
(8) мне нравится )
10 AntonU
 
15.09.06
11:32
Кстати, еще вопрос, а как подключиться именно к SQL-ной базе

   Путь="E:\1CBases\Buh_2006_08\accdb1c\1sbdb_2005\";
   ПользовательОле="Admin";
   v77=Новый COMОбъект ("V77.Application");
   рез=v77.Initialize(v77.RMTrade, "/D"""+Путь+""" /N"+ПользовательОле+" /P","NO_SPLASH_SHOW");
   Если рез=0 Тогда
       Сообщить("Не удалось подключиться к базе.",СтатусСообщения.Важное);
       Возврат;
   КонецЕсли;

это для Dbf-ной. А как SQL-ную прописать?
11 АП
 
15.09.06
11:34
V77s
12 АП
 
15.09.06
11:37
(11) или V1CEnterprise, клинит

возьми (4) или (8) и не парься, а если пробежишься дебаггером, то сможешь удовлетворить свою тягу к знанию )
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс