Имя: Пароль:
1C
1С v8
Повторное подключение к внешнему источнику данных из 1С
,
0 bluekrab
 
03.11.16
12:32
Добрый день. Делаю подключение к файлу .GDB из 1с. Первое подключение проходит нормально. При повторном появляется ошибка:Произошла исключительная ситуация (ADODB.Recordset): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

Процедура подключения/отключения:

    
Connection = Новый COMОбъект("ADODB.Connection");
      Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;" +
     "Dbname=" + СокрЛП(Объект.ПутьКФайлу) + ";" +
     "UID=" + СокрЛП(Объект.Пользователь) +   ";" +                            

     "PWD=" + СокрЛП(Объект.Пароль);                            

    Попытка
        Connection.Open();
        Сообщить("Успешное подключение");
        
        
    Исключение
        Сообщить("Подключение к БД  не установлено. Проверьте настройки подключения");
        Connection = Неопределено;
    КонецПопытки;
///////////////////////////////////////    
     RS = Новый COMОбъект("ADODB.Recordset");
            RS.Open("Select produce.id From  produce Where produce.isactive = 1" , Connection);
            RS.MoveFirst();        
            Пока RS.EOF()=0 Цикл  
                  Cообщить(RS.Fields("id").Value);
                Попытка
                    RS.MoveNext();
                Исключение
                    Прервать;
                КонецПопытки;
            КонецЦикла;
        RS.Close();    
        RS = Неопределено;

    Connection.Close();
    Connection = Неопределено;
1 bluekrab
 
03.11.16
12:51
ап
2 Живой Ископаемый
 
03.11.16
12:54
а зачем второй раз подключаться?
так происходит всегда? даже если пыаешься подключиться например спустя 20 минут?
3 Живой Ископаемый
 
03.11.16
12:55
а, потому что ты его обнуляешь зачем-то, ну ок...
4 Живой Ископаемый
 
03.11.16
12:56
Еще раз, ошибка на этой строчке:
RS.Open("Select produce.id From  produce Where produce.isactive = 1" , Connection);
?
5 Живой Ископаемый
 
03.11.16
12:59
Раздерибань строку на такие:

    Команда = Новый COMОбъект("ADODB.Command");
    Команда.ActiveConnection = Connection;
Команда.CommandText = "Select produce.id From  produce Where produce.isactive = 1";
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
    Попытка
        НаборЗаписей = Команда.Execute();
    Исключение
        ОписаниеОшибки = ОписаниеОшибки();
        //Сообщить(ОписаниеОшибки);
        //А.П. май 2012
        ЗаписьЖурналаРегистрации("Paradox.НаборЗаписей.Исключение",УровеньЖурналаРегистрации.Ошибка,,,Команда.CommandText+Символы.ПС+ОписаниеОшибки,);
        

    КонецПопытки;




И можно еще


    Connection.ConnectionTimeOut =20;
    Connection.CursorLocation = 1;
    Connection.Mode=1;


Перед  

Попытка
        Connection.Open();
6 Живой Ископаемый
 
03.11.16
13:03
но только чур, это не внешние источник данных как это принято в 1Совской терминологии.
7 bluekrab
 
03.11.16
13:14
(6) прошу прощения за терминологию)
Да, ошибка в этой строке. Раздерибанить не получилось:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
8 Живой Ископаемый
 
03.11.16
15:17
А почему не получилось? Раздерибань