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

Публикация № 16845 27.11.08

Разработка - Запросы

Поддерживаются: 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. Навеяно //infostart.ru/projects/2960/ - решил поделиться своими наработками

Скачать файлы

Наименование Файл Версия Размер
ЗапросБД.ert

.1227816197 12,00Kb
240
.1227816197 12,00Kb 240 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AndrewEv 18 28.11.08 09:00 Сейчас в теме
Соединю вместе с тем, что тянет у меня из Excel, найду для OpenOffice - и будет мне счаст'е
2. German 412 28.11.08 15:26 Сейчас в теме
скорость никакая .. курите Ei
3. kivals 5 02.12.08 01:48 Сейчас в теме
(2) Не понял - где-то есть Enterprise Integrator работающий с 1С 7.7 и базами, отличными от MSSQL?
А про скорость я писал: "Пользуйтесь обработкой разумно ... но при большом объеме передаваемых данных естественно проигрывает в скорости прямым обращениям к ODBC"
4. Lexus 27.12.11 16:43 Сейчас в теме
Сообщить("Подробный формат вызова обработки смотрите в описании!");

может я что не так делаю, но у меня в "Описании" пусто :(
5. kivals 5 27.12.11 17:18 Сейчас в теме
(4)
Каюсь - осталось от устаревшей версии. Сейчас максимальное описание параметров находится в комментариях ПриОткрытии()
6. Lexus 27.12.11 17:32 Сейчас в теме
Оставьте свое сообщение

См. также

Микро консоль для запросов к MySQL базе из 1С: Предприятие 7.7

Инструментарий разработчика Запросы Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка, позволяющая выполнять запросы к базе, лежащей в MySQL, для 1С:Предприятие 7.7.

10.08.2022    2592    1    crocolo    0    

2

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    36235    Serginio    22    

43

Универсальный способ сравнения таблиц

Универсальные функции Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    21124    json    3    

20

Пример получения остатков по складу по запросу по почте из программы 1С 7.7.

Запросы Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Пример получения остатков по складу по запросу по почте из программы 1С 7.7. Для получения остатков необходимо пользователю с любого почтовика (с любого "мыла") отправить текст сообщения GiveMyStockBalance_ForAnalize на почтовый адрес определенный в Константа.СерверПолучения. Программа выдаст остатки (можно переписать функцию для выдачи любых данных) в формате xls на почту указанную в константе Константа.СерверОтправки. Программа может быть полезна в тех организациях где трудно или невозможно осуществить прямой доступ к 1С сотрудников для просмотра необходимых данных. Также можно организовать некий почтамт - запрос для клиентов - при посылке определенного логина клиентом на его почту будет автоматически выслана информация, например, акт сверки с клиентов, или процент выполнения его заказа и т.д.

3 стартмани

25.03.2014    24849    5    protexprotex    3    

5

Реализация условий в прямых запросах к журналу расчета.

Зарплата Запросы Расчет 7.7 1С:Зарплата и кадры 7.7 Абонемент ($m)

Обзор методов реализации условий и функций с условиями в обращениях к журналу расчетов при помощи прямого запроса.

1 стартмани

06.12.2012    13856    nicotin    5    

9

Прямые запросы: ускорение получения цен для типовой ТиС 7.7

Запросы Оперативный учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Россия Бесплатно (free)

Первая статья из цикла статей "Прямые запросы:...". Рассказывается о применении класса ПрямойЗапрос и компоненты 1С++ для ускорения функции глВернутьЦену() в типовой конфигурации Торговля и склад. Платформа 7.7.

15.11.2011    16217    leshik    21    

23

Выбор Движений документа по конкретному регистру, с помощью прямого запроса

Запросы Платформа 1С v7.7 OpenConf Конфигурации 1cv7 Россия Бесплатно (free)

Чтобы узнать какие движения сделал документ по конкретному регистру, в моем случае это регистр "ОстаткиПоСчетам" (оборотный), была написана следующая функция в глобальном модуле. Работает только для SQL версии и установленной внешнй компонентой 1С++!

26.05.2011    12985    Vix    4    

0

Быстрый поиск подчиненного документа, с помощью прямого запроса

Запросы OpenConf Конфигурации 1cv7 Россия Бесплатно (free)

При ситуации, когда необходимо проверить, есть ли у документа подчиненный документ, конкретного вида или нет, если есть, вывести на экран, в этой ситуации будет полезна следующая функция глобального модуля. Работает только в SQL версии и при установленной внешней компоненте 1С++ !

26.05.2011    13643    Vix    1    

2

Прямой запрос на выборку подчиненных документов

Запросы Платформа 1С v7.7 OpenConf Конфигурации 1cv7 Россия Бесплатно (free)

Иногда необходимо получить список или таблицу документов, подчиненных выбранному. Для этого в глобальном модуле была написана функция с прямым запросом на выборку подчиненных документов. Работает только в SQL версии и при установленной внешней компоненте 1С++ !

26.05.2011    19706    Vix    6    

6

Учет переплаты за прошлый период (персонифицированный учет в ПФР)

Зарплата Механизмы типовых конфигураций Запросы Оперативный учет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

Для того, чтобы в отчетности за текущий период учитывалась переплата по страховой/накопительной части, произведенная в прошлых отчетных периодах.

06.05.2011    6173    pavel_vrn    8    

9

Ускоритель СЗВ 2010 для ЗиК 2.99

Зарплата Запросы Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бесплатно (free)

Ускоряет формирование СЗВ примерно вполовину за счет уменьшения числа запросов. Реально полезно, когда надо часто и много заходить в редактирование форм СЗВ. ЗиК 2.99

20.07.2010    10259    aves    7    

30

Оптимизация штатных запросов 7.7

Запросы Оперативный учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия Россия Бесплатно (free)

1С 7.7 выполняет запросы просто и бездумно - все что сказали, все и сделает. Никаких попыток оптимизации. Если в запросе есть переменная, например "СвойствоПоставщика=Регистр.ПартииНаличие.Партия.Поставщик.ОсновноеСвойство;" произойдет обращение к справочникам контрагентов и значений свойств, даже если переменная СвойствоПоставщика не используется ни в условиях, ни в группировках. Что оборачивается потерей быстродействия.

26.01.2010    17371    vcv    22    

43

Расчет итогов по группам справочника в прямом запросе.

Запросы OpenConf Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Рассмотрен алгоритм расчета итогов по группам справочника при помощи рекурсивных запросов.

19.01.2010    13313    glassman    5    

13

Работа с периодическими реквизитами 1С версии 7.7 при помощи прямых запросов.

Запросы OpenConf Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Описание структуры хранения периодических реквизитов, рассмотрены подробно несколько простых примеров использования прямых запросов при работе с периодическими реквизитами. Приведены несколько текстов прямых запросов для решения на мой взгляд распространенных задач.

23.12.2009    42407    glassman    11    

77

Обучение: Учимся строить запросы

Запросы Оперативный учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Маленькая обработка для желающих изучить (если таковые остались)))) программирование запросов в 1С:Предприятие 7.7, а также понять принципы их работы

10 стартмани

21.05.2009    26247    2081    GSoft    42    

132

Прямые запросы 1с++, описания таблиц 1с, примеры прямых запросов

Запросы Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Естественно америку в этой подборке не открыли, но за такое количество полезной информации, да еще и упорядоченной, однозначно низкий поклон. Тут есть практически вся информация о таблицах, которая может вам понадобиться при написании прямых запросов. И очень внятные примеры, по возрастанию сложности запросов.Одним словом - MustHave.Думаю лучшей аннотацией к закладке будет её содержание: 1. Описание общих таблиц 1С V77 1.1. Общее описание хранения данных 1С. 1.1.1. Хранение ID объекта 1.1.2. Хранение даты 1.1.3. Хранение времени 1.2. Описание таблиц 1С 1.2.1. Таблица _1SCONNECT - Сессии (соединения) 1.2.2. Таблица _1SCONST - Константы 1.2.3. Таблица _1SCRDOC - Ссылки документов 1.2.4. Таблица _1SJOURN - Журналы 1.2.5. Таблица _1SDNLOCK - Номера документов 1.2.6. Таблица _1SSTREAM - Последовательность документов 1.2.7. Таблица _1SSYSTEM - Системная 1.2.8. Таблица _1SUIDCTL - Уникальности 1.2.9. Таблица _1SUSERS - Соединения 2. Подсистема справочников и констант 2.1. Предисловие 2.2. Введение 2.3. Описание полей таблиц справочников 2.4. Описание полей таблицы констант и периодических реквизитов справочников 2.5. Примеры запросов 2.5.1. Пример 1. Получение всех записей справочника. 2.5.2. Пример 2. Получение записей только групп справочника. 2.5.3. Пример 3. Получение записей только элементов (не групп) справочника. 2.5.4. Пример 4. Получение записей только непомеченных элементов справочника. 2.5.5. Пример 5. Получение записей элементов с периодическим реквизитом на максимальную дату. 2.5.6. Пример 6. Получение записей элементов с периодическим реквизитом на конкретную дату. 2.5.7. Пример 7. Получение значений непериодических реквизитов агрегатных типов. 2.5.8. Пример 8. Получение записей элементов справочников с их родителями. 2.5.9. Пример 9. Выборка элементов из подчиненного справочника. 3. Подсистема документов и регистров 3.1. Предисловие 3.2. Введение 3.3. Общее описание хранения данных 1С в подсистеме документов 3.3.1. Краткое описание таблиц 3.3.2. Примеры запросов 3.3.2.1. Пример 1. Получение всех документов одного вида со всеми реквизитами шапки. 3.3.2.2. Пример 2. То же, включая все общие и системные реквизиты. 3.3.2.3. Пример 3. То же, плюс все реквизиты табличной части. 3.3.2.4. Пример 4. То же, с фильтром по дате документа (за один день). 3.3.2.5. Пример 5. Получение документов родителей по подчиненному документу. 3.3.2.6. Пример 6. Получение списка подчиненных документов. 3.3.2.7. Пример 7. Получение списка только проведенных документов. 3.3.2.8. Пример 8. Получение списка документов, принадлежащих разным типам учета. 3.3.2.9. Пример 9. Получение списка документов по графе отбора. 3.4. Регистры 3.4.1. Общее описание подсиcтемы регистров 3.4.2. Рассмотрим примеры 3.4.2.1. Структура и описание полей таблиц регистров 3.4.2.1.1. Таблица RGxxx 3.4.2.1.2. Таблица RAxxx 3.4.2.2. Пример 1. Получение итогов на ТА или на конец периода. 3.4.2.3. Пример 2. Получение сумм прихода и расхода за один месяц (оборотов). 3.4.2.4. Пример 3. Получение итогов и остатков на произвольную дату. 3.4.2.5. Пример 4. Получение итогов и остатков на документ. 3.4.2.6. Пример 5. Получение остатков и оборотов за произвольный период. 3.4.2.7. Пример 6. Пересчет итогов по одному из регистров остатков. /*если не работает основная ссылка, попробуйте http://www.script-coding.com/v77tables.html */

12.08.2008    27539    kitt    11    

87

Прямой запрос к SQL-базе: количество дней наличия товара на складе за период

Запросы Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

tormozit в своей статье http://infostart.ru/articles/228/ приводил пример для "восьмерки", идея мне понравилась, поэтому решил из-за производственной необходимости переписать на прямой запрос к SQL-базе 7.7... Чуть позже, если получится, перепишу для dbf-базы.

27.10.2007    20538    Aleksey.Bochkov    2    

4

Обучение: Использование рекурсии при обращении к результатам выполнения запроса

Запросы Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Коллеги! Не пожалейте несколько секунд нажав на плюсик, вам мелочь, а мне приятно))))) Также оставляйте замечания, комментарии и пожелания. В продолжение темы от O-Planet Мастер класс «O-Planet»: использование рекурсивных вычислений в 1С - http://infostart.ru/articles/82/?ref=8784 Пару лет назад столкнулся с тем, что в ПУБе в некоторых отчетах количество группировок ограничено 5 уровнями и это при списке из позиций кажется 12. Честно говоря, как-то не вдохновило описывать 12 реальных циклов, решил написать рекурсию. Потом функция переросла в практический пример, который я привожу своим слушателям для демонстрации того, как реализовывать рекурсию при использовании запроса. пример отчета с рекурсией вот тут - http://infostart.ru/projects/827/?ref=8784 в примере также дана обучающая обработка по работе с запросом, очень будет полезна тем кто только начинает знакомится с таким объектом как "запросом"

14.03.2007    16323    GSoft    23    

28

Практика: Использование рекурсии при обращении к результатам выполнения запроса

Запросы Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Коллеги не пожалейте несколько секунд ,нажав на плюсик, вам мелочь, а мне приятно))))) Также оставляйте замечания, комментарии и пожелания. Подробности тут http://infostart.ru/articles/156/?ref=8784

14.03.2007    19131    499    GSoft    5    

45

1C-QueryAnaliser V.1.71 (Анализатор Запросов: Запрос черный, запрос прямой, SQL, консоль, интерпретатор, отладчик, конструктор запросов, набор шаблонов)

Инструментарий разработчика Запросы Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка позволяет строить и исполнять запросы на языке 1С v.7.7, исполнять код на языке 1С без использования конфигуратора. Построитель запросов позволяет писать запросы без использования конфигуратора и обходиться без заучивания точных названий полей. Позволяет строить прямые SQL-запросы как напрямую, так и с помощью мнемонического языка YoSQL. Набор шаблонов позволяет осуществлять действия с данными с помощью языка 1С и MS SQL. Позволяет работать при размере экрана 800х600 точек. Не требует подключения внешних компонент.

1 стартмани

16.08.2006    25002    2219    Sure    23    

124