Обертка для запросов к другим СУБД


Поддерживаются: MSSQL, MSAccess, MySQL, PostgreSQL, Firebird, Oracle
Возвращает: объект типа ТаблицаЗначений с результатами

Обработка выполняет запрос к внешней базе и возвращает таблицу значений (если запрос не имеет тип "Команда" - параметр списка "ТипЗапроса", см. ниже)

Параметром формы при открытии передается список значений (Далее: список параметров)

Поддерживаемые форматы СУБД (определяются параметром списка "ТипБД"):
MSSQL, MSAccess, MySQL, PostgreSQL, Firebird - через ODBC драйвера соответствующей СУБД (как найти драйвер: в Google запрос вида: "ODBC driver" и тип СУБД)
Oracle - через Oracle Objects for OLE

Запросы должны быть написаны на соответствующем диалекте СУБД (параметр списка: "Запрос")

Для MySQL исполняются предварительные команды для приведения таблицы символов в cp1251. Кроме того для MySQL параметры в тексте запроса в виде {Параметр} предварительно заменяются на значения параметров из списка (параметр списка: "Параметры")

Параметр списка "Поля" позволяет переименовать поля запроса в поля таблицы значений (например - если движок БД не поддерживает русских названий или порой просто удобно для отладки)

Описание прочих параметров списка и какие из них обязательны (для обработки) - смотри в процедуре ПриОткрытии()
При этом необязательный параметр обработки может обязательно требоваться движком БД (например - сервер) - это уже сугубо индивидуально

Некоторые типы данных ODBC не понимаются в 1С - используйте конвертацию типов в запросах (type cast)

Пользуйтесь обработкой разумно - это удобный инструмент, позволяющий легко получить ТЗ в 1С просто задавая запрос БД, но при большом объеме передаваемых данных естественно проигрывает в скорости прямым обращениям к ODBC или OOfO объектам (особенно если сначала анализируется одно поле результата, и при несоответствии условиям - остальные поля строки игнорируются)

(это же описание - внутри текста обработки)

Для вызова я использую следующий код (функция глобального модуля):

//******************************************************************************
// глЗапросБД(Сп)
//
// Параметры:
// Сп - cписок параметров, см. описание обработки
//
// Возвращаемое значение:
// ТЗ с результатами запроса
//
// Описание:
// Выполняет запрос к БД
//
Функция глЗапросБД(Знач Сп) Экспорт
Если Метаданные.Обработка("ЗапросБД").Выбран()=1 Тогда
ОткрытьФормуМодально("Обработка.ЗапросБД", Сп);
Иначе
Файл=КаталогИБ()+"ExtForms\ЗапросБД.ert";
ОткрытьФормуМодально("Отчет", Сп, Файл);
КонецЕсли;

Возврат Сп;
КонецФункции // глЗапросБД()

// Вызов:
Сп=СоздатьОбъект("СписокЗначений");
Сп.Установить("ТипБД","MSAccess");
Сп.Установить("БазаДанных",ФайлБД);
Сп.Установить("Запрос","select * from table");
//Сп.Установить("Поля",спПоля);
ТЗ=глЗапросБД(Сп);

P.S. Навеяно http://avprog.ru/projects/2960/ - решил поделиться своими наработками

Файлы обработки:

-