Запросы к MS SQL, SQLite, MySQL

08.10.12

Интеграция - Внешние источники данных

Обработка позволяет делать запросы к базам MS SQL, SQLite, MySQL через ADODB. Вы можете воспользоваться как консолью запросов, так и сделать запрос из кода.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ADODB.epf
.epf 27,70Kb
381
381 Скачать (1 SM) Купить за 1 850 руб.

Наглядный инструмент для обращения к SQL базам из 1С. Вы можете просто открыть обработку (тогда вам будет доступна консоль запросов), а можете сделать запрос из кода. Далее пример вызова из кода (если не встраивать в конфигурацию):

    ADODB = ВнешниеОбработки.Создать("c:\Обработки\ADODB.epf");
   
ADODB.База = "base_test";
   
ADODB.Сервер = "192.168.0.1";
   
ADODB.Пользователь = "sa";
   
ADODB.Пароль = "test_password";
   
ADODB.MSSQL_Подключение();

   
// Берем первую попавшуюся таблицу и делаем запрос
   
масТаблиц = ADODB.MSSQL_ПолучитьТаблицы();
   
ТекстЗапроса = "SELECT TOP 10 * FROM " + масТаблиц[0];
   
тзРезультат = ADODB.MSSQL_ВыполнитьЗапросИВернутьТаблицуЗначений(ТекстЗапроса);
   
тзРезультат.ВыбратьСтроку("Выборка");

У обработки есть следующие функции

  • MSSQL_Подключение  - подключится к базе
  • MSSQL_ВыполнитьЗапросИВернутьТаблицуЗначений — Делаем запрос к базе и полученный результат  преобразуем в  таблицу значений.
  • MSSQL_ВыполнитьЗапрос - выполем запрос. Можно воспользоваться для тех запросов которые ничего не возвращают.  Возвращает данные ADODB.RecordSet
  • MSSQL_РезульататЗапросВТаблицуЗначений - Разбирает ADODB.RecordSet в 1С таблицу значений.
  • MSSQL_ПолучитьТаблицы - возвращает массив с именами таблиц в MS SQL
  • СохранитьНастройки – сохраняем настройки подключения в XML файл
  • ПрочитатьНастройки – читаем настройки подключения из XML файла

Добавление от 16.07.2012

Была добавдена поддержка SQLite (ODBC драйвер).
Реквезит "ТекущийТипБазы" указывает с каким типом базы работаем. Поддерживает слежующие значения:

  • MSSQL
  • SQLITE

Добавленны новые функци:

  • SQLite_ПолучитьПоляТаблицы - Возвращает таблицу значений с информации по полям таблицы SQLite
  • SQLite_ПолучитьТаблицы - Возвращает имена таблиц сущесвующие в подключенной базе SQLite


Следующие функции могут использоваться как при работе с MS SQL так и с SQLite:

  • База_ВыполнитьЗапросИВернутьТаблицуЗначений - Выполянет запрос и результат запроса возвращает в таблицу значений
  • База_РезульататЗапросВТаблицуЗначений - На основе результата запроса (База_ВыполнитьЗапрос) создаем таблицу значений
  • База_ВыполнитьЗапрос - Выполянет запрос к базе
  • СелектЗапрос - создает select-запрос для опредленного типа базы

Добавление от 23.08.2012

Добавлена функция получения статистики количества записей во всех таблицах.

Добавление от 08.10.2012

Добавлена поддержка ODBC MySQL

См. также

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    26438    26    1    

28

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    22922    24    49    

39

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1301    1    0    

3

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    48652    98    106    

70

Зарплата Внешние источники данных Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 организаций (далее Парус) в конфигурацию 1С:Зарплата и управление персоналом, ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

07.06.2021    13738    2    3    

3

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52670    104    165    

91
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mitiyV 7 30.05.12 12:20 Сейчас в теме
А в чем разница с консолью запросов ADO? http://infostart.ru/public/62737/
2. BorisMor 311 30.05.12 12:35 Сейчас в теме
(1) mitiyV,
В первую очередь это все таки "обертка-обработка" для выполнения запросов из кода.
Сама консоль запроса - это вторично т.к. была сделана для тестирования функций запроса.
3. Serj1C 483 30.05.12 13:33 Сейчас в теме
(2) Не проще было сделать обертку для обработки (1)? = )
4. BorisMor 311 30.05.12 14:41 Сейчас в теме
(3) Serj1C,
Не понял что вы имели в виду...
Сделал обработку что бы при необходимости вызвать ее из кода (предварительно добавив в конфигурацию) и выполнить запрос к MS SQL. Конечно можно было сделать модуль с 10-ком функциями, но по мне, в виде отдельной обработке понятней.
5. Misanets 341 31.05.12 10:10 Сейчас в теме
Думаю, надо бы добавить возможность доменной авторизации аутентификации средствами ОС на скуле.
6. BorisMor 311 31.05.12 13:11 Сейчас в теме
(5) Misanets,
Добавил. Но требуется проверка. У меня авторизация через sa.
7. Misanets 341 31.05.12 14:57 Сейчас в теме
(6) не работает.
Если аутентификация ОС, строка соединения следующая:
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True; Initial Catalog=<Таблица>;Data Source=<БД>"

Если стандартная:
"Provider=SQLOLEDB.1;Password=<Пароль>;Persist Security Info=True;User ID=<Логин>;Initial Catalog=<Таблица>;Data Source=<БД>"

И в процедуру АвторизацияОСПриИзменении() добавить строку:
ЭлементыФормы.Пароль.Доступность = Не АвторизацияОС;
BorisMor; +1 Ответить
8. BorisMor 311 31.05.12 20:28 Сейчас в теме
(7) Misanets, Поправил. Спасибо за наглядность пояснения.
9. petrov_al 10 01.06.12 12:36 Сейчас в теме
Спасибо автору полезная вещь, появилась почва для фантазий...
10. mike581 06.06.12 09:26 Сейчас в теме
Автору респект. Иногда приятнее написать запрос непосредственно на MS SQL.
Особенно если INSERT, SET, UPDATE и т.д. нужны.
11. avhrst 519 09.06.12 03:38 Сейчас в теме
Интересно наблюдать как программеры по 1С движутся к концепции от которой 10 лет назад отказались: База данных - GUI пользователя (желательно web), 1Сv7 была и базой данных (DBF) и апликейшен сервером, v8.1 "разрешили" в базу напрямую ходить, v8.2 практически стал апликейшен сервером (Middleware) , и от базы данных отстали. А дальше что? 1С v9 - кеширующий web сервер ?
20. frc 18.07.12 17:41 Сейчас в теме
(11) it.net,
v8.1 "разрешили" в базу напрямую ходить

когда и кто разрешил?
12. aximo 2173 09.06.12 09:41 Сейчас в теме
интересно, только вместо йп, надо писать сетевое имя, мне кажется
13. Lyns_owner 356 10.06.12 23:10 Сейчас в теме
Серьезный подход, однозначный плюс)
14. navi 12.06.12 14:07 Сейчас в теме
А запись можно делать?
15. BorisMor 311 16.07.12 14:59 Сейчас в теме
(14) navi,
Можно)
см. MSSQL_ВыполнитьЗапрос и База_ВыполнитьЗапрос
16. kiros 52 16.07.12 16:06 Сейчас в теме
Класс! У нас "Игра с огнем" на сервере не запускается, попробуем этот механизм! Спасибо.
17. K_A_O 550 17.07.12 11:53 Сейчас в теме
Как ни удивительно, мне придется повторить свой комментарий к другой обработке (http://forum.infostart.ru/forum24/topic29874/message336391/#message336391)

----
Есть "ADO Demo" от Михайлова. Несмотря на 2004 год - там функционал поболе.
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=120&lid=2681
----

Эта обработка хорошая, но у Михайлова возвращается типизированная таблица значений, которую можно использовать в дальнейшем в запросах.
18. BorisMor 311 17.07.12 13:20 Сейчас в теме
(17) K_A_O,
У меня не консоль, а интерфейс для доступа до баз. Т.е. Вы можете использовать эту обработку в своем коде для доступа до баз. А консоль используется для тестирования связи.
Спасибо за ссылки.
21. AlexO 136 11.10.12 14:09 Сейчас в теме
(18)
с чего вдруг у вас указано подключение к MySQL? Вы намеренно ввводите в заблуждение, что ODBC-драйвер для подключения к MySQL совершенно не нужен, и достаточно подобного драйвера от MS SQL?
22. BorisMor 311 11.10.12 14:25 Сейчас в теме
(21) AlexO,
В диалоге подключения дается ссылка на ADODB драйвер для MySQL и SQLite.
23. AlexO 136 11.10.12 14:41 Сейчас в теме
(22)
в смысле, "ссылка в диалоге подключения"? в самой статье написано правильно, но только по SQLite и MS SQL, про MySQL надо тогда аналогично дополнить...
19. zfilin 2362 18.07.12 17:27 Сейчас в теме
Однако, мне казалось, что ADO это уже универсальная обертка для доступа к любому типу баз данных, был бы драйвер и строка подключения.
24. Boudybuilder 35 04.06.13 01:39 Сейчас в теме
ТекстЗапроса = "SHOW TABLES";
// подключение к базе MySQL
Соединение = Новый COMОбъект("ADODB.Connection");
СтрокаСоединение = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=;DataBase=;UID=;PWD="; //{MySQL ODBC 3.51 Driver}
Попытка
Соединение.Open(СтрокаСоединение);
Сообщить("Соединение установлено");
Соединено = Истина;
Исключение
Сообщить("Ошибка подключения к базе MySQL!", СтатусСообщения.Важное);
Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
Соединено=Ложь;
Возврат;
КонецПопытки;

Если Соединено Тогда
SQLcmd = New COMОбъект("ADODB.Command");
SQLcmd.ActiveConnection = Соединение;
SQLcmd.CommandText = ТекстЗапроса;
тз = Новый ТаблицаЗначений;
мойЗапрос = Новый COMОбъект("ADODB.Recordset");
мойЗапрос.Open(SQLcmd);
КолвоКолонок = мойЗапрос.Fields.Count();

КонецЕсли;

Я тут шаманю , но никак получить список таблиц не могу...
Прийдется качать обработки и смореть на примере.
25. Boudybuilder 35 04.06.13 01:40 Сейчас в теме
если у пользователя нет никаких привилегий для таблицы, таблица не будет показана в результатах команды SHOW TABLES или mysqlshow db_name.

это о каких привилегиях идет тут речь ,что то я не пойму...
26. PrinzOfMunchen 84 08.06.13 07:30 Сейчас в теме
А почему обязательно подключаться через ADO? Можно же воспользоваться внешними источниками данных...И из обычной консоли запросов уже писать запросы к БД(в том числе удаленных) на языке запросов 1С?
27. HEKPOH 76 12.06.13 00:51 Сейчас в теме
(26) без вызова хранимых процедур и кучи функций SQL :(
Это во-первых.
А во-вторых, исключительно SELECT.
Так что, манипулирование данными с помощью этой обработки и "ВЫБРАТЬ" посредством внешних источников данных - разные вещи
28. sashulyT 201 27.01.16 14:51 Сейчас в теме
При подключение в SQLite из 8.3 вылетает ошибка:
"{ВнешняяОбработка.ADODB.МодульОбъекта(204)}: Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию"
Tolpinski; +1 Ответить
Оставьте свое сообщение