InterBase через OLE DB из 1С v 8.x

В статье описан пример работы с InterBase через OLE DB из 1С v 8.x

Для работы требует ADO - оно сейчас есть везде, и FreeIBProvider - это IB OLEDB драйвер.


Итак… хорошо сначала подумали, потом поставили FreeIBProvider Коваленко, а потом написали в 1С v 8.х такую процедуру:

//  Процедура ЧтениеБДInterBase - производит чтение данных из таблицы InterBase
//
// Параметры:
//    Сервер - Строка с именем сервера на котором находится база InterBase (например: "ServerBD")
//    МестоНахождениеБД - Строка с полным именем базы InterBase (например: "d:\database\myBase.gdb")
//    ПараметрыПодключения - Строка с требуемыми если нужно параметрами подключения (например: "auto_commit=True;ctype=win1251")
//    ИмяПользователя - Имя пользователя имеющего право на работу с InterBase (например: "SYSDBA")
//    ПарольПользователя - пароль доступа к InterBase (например: "password")
 
 
Процедура ЧтениеБДInterBase (Сервер, МестоНахождениеБД, ПараметрыПодключения, ИмяПользователя, ПарольПользователя)
 
      стрПодключения = "data source=" + Сервер + ":" + МестоНахождениеБД + ";" + ПараметрыПодключения + ";user ID=" +
      | ИмяПользователя + ";password=" + ПарольПользователя
 
      Connection = Новый COMОбъект("ADODB.Connection");
      Connection.Provider = "LCPI.IBProvider";
      Connection.ConnectionString =  стрПодключения;
 
      попытка
          Connection.Open();
      исключение
          Сообщить ("Проблемы с подключением к InterBase" );
          Возврат;
      КонецПопытки;
 
      RS = Новый COMОбъект("ADODB.Recordset");
 
     //Запрос к базе данных на языке SQL запросов
 
     попытка
         RS.Open("Select * From name", Connection );
     исключение
         Сообщить ("Проблемы с выполнением запроса к InterBase");
         Возврат;
     КонецПопытки;
 
     // Пример обработки полученного recordset
 
     Пока RS.EOF() = 0 Цикл
        Имя = RS.Fields("Name").Value;
        Описание = RS.Fields("Description").Value;
 
    // Обработка других полей
 
        RS.MoveNext();
 
     КонецЦикла;
 
     // Завершение работы с InterBase 
 
     RS.Close();
     Connection.Close();
 
КонецПроцедуры;

Если понравится - «курить букварь» ADO, OLE DB, Connection, Command, Recordset, и т.д…. Потом сделать наконец «все по-человечески» :-)

А вообще при работе с InterBase через OLE DB (как в приведенном примере), можно делать все, что можно делать с базами данных…. Запросы, в том числе параметризованные, процедуры, транзакции, и т.д. Данные, само собой, можно не только «доставать», но и «записывать». Можно даже работать с несколькими транзакциями в одном коннекте, как здесь: http://www.ibprovider.com/eng/examples/example_09_02.html

другой на мой взгляд очень полезный материал с примерами доступа к SQL-таблицам базы данных 1С:Предприятие с помощью методов ADO я рекомендую (с поправкой что примеры приведены для 1С v 7.7) почитать тут - http://melan.gazinter.net/ADO&SQL&1C/index.html

Кстати взять FreeIBProvider можно на сайте разработчиков - http://www.ibprovider.com