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


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

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

Поддерживаемые форматы СУБД (определяются параметром списка "ТипБД"):
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. Навеяно //infostart.ru/projects/2960/ - решил поделиться своими наработками

https://infostart.ru/public/16845/

Скачать:
16845_Obertka_dlya_zaprosov_k_drugim_SUBD.ert