1cMyAdmin - работа с MySQL из 1С

Программирование - Инструментарий

MySQL ADODB ODBC ADO

83
Инструмент для работы с СУБД MySQL через ADOdb: просмотр таблиц, выполнение запросов.

MySQL — свободная реляционная система управления базами данных. Широко применяется в различных системах - в корпоративных системах, ERP/CRM-приложениях, Live-support systems (хэлп центры, чаты), очень распространён в вебе - cms, форумы (тот же 1С-Битрикс поддерживает работу с MySQL)

ADOdb — программная библиотека, обеспечивающая прикладной интерфейс доступа к базам данных для различных языков программирования, основанная на некоторых концепциях Microsoft ActiveX Data Objects. Библиотека обеспечивает разработчика приложений абстрактным инструментарием, позволяющим создавать приложения без необходимости программирования поддержки каждого из конкретных возможных типов источников данных.

Разработка представляет собой внешнюю обработку для 1С:Предприятие 8.3 (интерфейс Такси) и позволяет просматривать структуру баз данных под управлением MySQL, просматривать таблицы, выполнять произвольные запросы. В составе обработки имеется консоль запросов, которая позволит в визуальном режиме построить простой запрос на выборку (SELECT).

Драйвер

Обращение к БД (выполнение запросов) происходит на клиенте и прежде всего потребуется установить драйвер MySQL Connector ODBC на клиенте.
В зависимости от архитектуры (32-bit / 64-bit) скачиваем (c http://dev.mysql.com/downloads/connector/odbc) и устанавливаем драйвер :

Качаем драйвер

 

Строка подключения, используемая при подключении средствами ADOdb, будет выглядеть примерно так:
DRIVER={MySQL ODBC 5.3 Unicode Driver}; SERVER=dbserver; UID=username;PWD=pwd;

DSN

А можно и проще. Как вы уже, возможно, догадались (в силу используемой технологии ;-)) предполагается, что работа с инструментом 1cmyadmin будет из ОС Windows.

Поэтому порекомендую настроить системный DSN (Data Source Name). Чем он удобен?

- можно быстро сделать тест подключения
- значительно сократить строку подключения

Сделаю одно уточнение, которое, судя по форумам, может пригодиться многим настраивающим DSN в Windows
В общем случае, 32x или 64x приложение должно обращаться к соответствующей настройки DSN - в 64-разрядной системе имеется настройка и под 32 и под 64

Пример.

Cервер 1С:Предприятия (64-bit) для Windows должен обращаться к настройкам DSN 64-bit
Cервер 1С:Предприятия (32-bit) для Windows должен обращаться к настройкам DSN 32-bit

По умолчанию в Windows 64-bit вызывается настройка DSN для приложений под эту платформу. Для настройки под 32 потребуется вызвать утилиту настройки %windir%\SysWOW64\odbcad32.exe

Настройка DSN

 

Теперь в строке подключения можно указать DSN=myDB

SSH

Часто на хостингах доступ к серверу БД возможен только при ssh-туннелировании. И если ваша база находится на таком хостинге, то перед подключением потребуется подключиться ssh-клиентом. Например, таким клиентом может быть putty.

Можно настроить подключение через GUI, а можно и из командной строки. Пример строки запуска putty из cmd:

c:\putty.exe -P 22 ssh.example-hosting.ru -ssh -l "login" -pw password -L 3306:dbserver:3306

Здесь

c:\putty.exe - путь до программы
22 - порт по умолчанию
ssh.example-hosting.ru - адрес ssh-сервера
login - имя пользователя к ssh
password - пароль пользователя
dbserver - имя сервера БД (часто используется у хостеров localhost, но вполне может отличаться)
-L 3306:dbserver:3306 - это настройка перенаправления портов на локальный комп с сервера БД, с 3306 сервера БД на 3306 вашего компьютера (где запущен putty), после подключения можно слушать на локалхост ваш MySQL

При желании можно автоматизировать этот процесс в 1С перед установкой соединения с СУБД, например, так:

&НаКлиенте 
Процедура РестартПутти()

// прибьем путти
ИмяП="putty.exe"; 
Locator=Новый COMОбъект("WbemScripting.SWbemLocator"); 
objWMIService=Locator.ConnectServer("."); 
pEnum=objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '"+ИмяП+"'"); 
Для Каждого Object Из pEnum Цикл 
Object.Terminate(); 
КонецЦикла;

// запустим путти
// Путти() = c:\putty.exe -P 22 ssh.example-hosting.ru -ssh -l "login" -pw password -L 3306:dbserver:3306
ЗапуститьПриложение(Путти());
КонецПроцедуры


ADODB.Connection

Инструмент основан на работе с com-объектом ADODB.Connection. Текст запроса пишется на православном SQL, иногда с учетом специфики СУБД, пример кода:

&НаКлиенте
Процедура ПолучитьОписаниеТаблицыЗапрос() Экспорт
ConnectionString = "DSN=myDB";
База = "db_site";
Запрос = "SELECT
|id,
|`name`
|FROM
|users
|ORDER BY
|`name` ASC";

Попытка
Connection = Новый COMОбъект("ADODB.Connection");
Исключение
Сообщить( "Неудачная попытка создания объекта: ADODB.Connection" );
КонецПопытки;

Connection.ConnectionString = ConnectionString;
Попытка

Connection.Open();
Если ЗначениеЗаполнено(База) Тогда
Connection.DefaultDatabase = База;
КонецЕсли;

Исключение

Сообщить(Строка(ТекущаяДата())+ "Не удалось подключиться к БД сайта");
Возврат;

КонецПопытки;
Table = Connection.Execute(Запрос); 


Пока Table.EOF() = 0 Цикл 

Сообщить(Table.Fields("id").Value +": " +Table.Fields("name").Value); 
Table.MoveNext();

КонецЦикла;
Table.Close();

КонецПроцедуры


Как работать с обработкой

Представленная обработка дает возможность просматривать таблицы БД и выполнять произвольные запросы.
Настройки подключения можно сохранять и восстанавливать. Для начала работы задайте строку подключения.
Нажмите "Подключить". После подключения на странице "Таблицы" появится иерархия баз данных/таблиц

Дерево БД

 

Для просмотра таблицы щелкните по её названию пкм, выберите "Открыть"

Построить и выполнить запросы можно на странице "Запросы". Здесь в визуальном режиме можно быстро составить простой запрос на выборку.

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

Предусмотрен просмотр в табличном виде запросов SELECT. В консоли определено 2 режима исполнения запроса: Выборка - просмотр результатов запросов SELECT, Действие - для всех остальных зпросов.

Консоль запросов

 

Результат запроса

 

Форма выбора условия

 

 

 

 

83

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

Наименование Файл Версия Размер
ADODB.epf
.epf 25,08Kb
10.12.16
127
.epf 25,08Kb 127 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. Shaka13 09.11.14 22:29 Сейчас в теме
ну и зачем сие счастье?
Идальго; +1 1 Ответить
2. vano-ekt 1117 10.11.14 07:56 Сейчас в теме
(1) инструмент для разработчика, быстро сгенерить запросы к внешней БД, и прикрутить его в 1С
3. Yashazz 2301 10.11.14 16:53 Сейчас в теме
Толковую ссылочку по ADO подкинуть можете?
4. vano-ekt 1117 11.11.14 08:57 Сейчас в теме
(3) да здесь у ADOdb 3-4 метода только используется,
больше SQL надо владеть
5. DoctorRoza 11.11.14 12:48 Сейчас в теме
Как-то имел опыт, женитьбы интернет-магазина, на мускуле, и УТ 11. Для подобных работ, такие обработки само то!
6. PVG_73 17 12.11.14 12:04 Сейчас в теме
Спасибо!
Частенько приходится работать с мускулом....
Интересный инструмент.... самому все никак было не чиркануть.... правда на 8.3 и Такси.... но ничего зато есть описание.... :)
7. Fox-trot 91 12.11.14 12:36 Сейчас в теме
с таким же успехом мона было написАть 1cMyAdmin - работа из 1С с M$SQL, Oracle... нужное подчернуть =)
ведь строку подключения поменять не составит труда
8. vano-ekt 1117 12.11.14 12:57 Сейчас в теме
(7)пока по базе information_shema в мускуле структура баз формируется, если переделать методами ADOdb - тогда да, можно
9. Fox-trot 91 13.11.14 06:59 Сейчас в теме
на сколько я помню в m$sql есть таки information_schema, так чта переписывать не много придется
10. aleksey.kubovtsov 65 15.11.14 21:36 Сейчас в теме
спасибо автору за статью и обработку.
11. V_V_V 19.11.14 12:42 Сейчас в теме
Внешние источники данных осталось задействовать... Но это больше под самописные решения наверное.
P.S. Автор красава. Прикольные вещи регулярно выкладывает.
12. yuryshestakov 1 09.09.15 07:07 Сейчас в теме
Спасибо! Оч. полезная вещь!
13. Pavean 26.12.17 11:48 Сейчас в теме
Не совсем понятна роль Putty в этом процессе. Она у меня к серверу с подключается, запросы в ней выполняются. Но 1С это пофигу.
Причем 32битная версия ODBC 3.51 при попытке создать DSN ругается что мой хост "is not allowed to connect to this MySQL server", 64-битная 5.3 (32бита не стала) при тех же условиях пишет что не найден указанный модуль и ссылается на файл который реально существует.
Так вот вопрос, соединение которое устанавливает Putty, как то влияет на 1С, и если нет то какой в нём смысл? При создании соединения в Putty есть галочка "share SSH connections if possible", но видимо не поссибл.
14. vano-ekt 1117 26.12.17 12:42 Сейчас в теме
(14) у меня СУБД наружу не было открыто, поэтому поднимал туннель при помощи putty, после чего подключался к mysql-серверу 1С
Оставьте свое сообщение