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

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, Действие – для всех остальных зпросов.

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

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

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

 

В КАТАЛОГ »