Подключение к mysql из 1с

Обновлено: 07.07.2024

При переезде на другой сервер столкнулся со следующей проблемой (Произошла исключительная ситуация Microsoft OLE DB Provider for ODBC Drivers): не работал обмен 1С с внешней базой данных MySQL. Оно то и правильно что не работал. Он не должен, ведь я не установил ODBC Connector MySQL и как следствие при попытке обмена видел ошибку (у вас наверняка что-то подобное выползает на экран, если вы сюда попали гугля аналогичную проблему 😉)

: Ошибка при вызове метода контекста (Open)
Соединение.Open();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

ПУНКТ 2. КАКАЯ ВЕРСИЯ MYSQL ODBC ANSI DRIVER НУЖНА?

И так. У нас для решения проблемы с подключением 1С 8.2/8.3 к промежуточной базе MySQL нам нужен, как я уже писал выше, ODBC Connector MySQL! И не простой, а именно тот, что у нас прописан в модуле обмена. Идём в Конфигуратор 1С , находим там модуль в котором прописано подключение и смотрим какой же чудесный драйвер и какой версии используется для подключения к внешней базе данных! И о чудо - это MySQL ODBC 5.3 ANSI Driver ! В моём случае, конечно у вас он может быть другой версии.

Сервер=" 127.0.0.1 ";
БазаДанных=" MySQLdbname ";
Пользователь=" sa ";
Пароль=" P@ssW0rD123! ";

Соединение = Новый COMОбъект("ADODB.Connection");
СтрокаСоединения = "Provider=MSDASQL;DRIVER=< MySQL ODBC 5.3 ANSI Driver >;SERVER="+Сервер+";DataBase="+БазаДанных+";UID="+Пользователь+";PWD="+Пароль+";";
Соединение.ConnectionString = СтрокаСоединения;
Соединение.Open();
Возврат Соединение;

Подчёркнутое заменить на своё 🙂

ПУНКТ 3. УСТАНОВКА MYSQL ODBC ANSI DRIVER

Но всё это чудо не будет работать собственно без драйвера, так что идём по этой ссылке и скачиваем себе драйвер подходящей версии и разрядности. Копируем на сервер и устанавливаем его. Думаю с этим у вас проблем не возникнет, а если будут, то дальше можете не читать 🙂.

ПУНКТ 4. НАСТРОЙКА СОЕДИНЕНИЯ 1С 8.2/8.3 С ВНЕШНЕЙ БАЗОЙ ДАННЫХ MYSQL

Дальше нам понадобится программа odbcad32 . Её устанавливать не нужно, она у вас уже есть! Ищите её в Администрирование или Ctrl + R odbcad32 Enter

Для 32 битных систем программа расположена:

%windir%\system32\odbcad32.exe

А для 64 битных систем программа лежит тут:

%windir%\syswow64\odbcad32.exe

Но и ту и другую вы можете открыть из Администрирование в панели управления.


MySQL в качестве системы управления базой данных доминирует в интернет-проектах. Приложение 1С:Предприятие может устанавливать соединения с серверами MySQL для обмена данными в обоих направлениях. Это может использоваться например:

  • для публикации сведений в интернет;
  • для получения сведений из интернет;
  • для обмена данными с другими приложениями 1С через общее интернет-хранилище.

Для установки соединения с сервером MySQL и подключения к одной из DB такая возможность должна быть предусмотрена целым комплексом серверных настроек, которые осуществляет администратор сервера, и здесь они не будут рассматриваться. Тем не менее, в ряде случаев доступ к каждой отдельной DB должен быть настроен администратором хостинга соответствующими средствами.

DirectAdmin Web Control Panel

При использовании для управления хостингом DirectAdmin Web Control Panel следует выполнить следующую последовательность действий:

Проверить наличие драйвера в системе можно в Панель управления -> Источники данных ODBC -> Администратор источника данных ODBC, драйвер должен присутствовать в закладке Драйверы в списке установленных драйверов, в списке будет отражено имя и версия. Окно администратора источника данных ODBC можно вызвать командами:

  • x32 версия: %windir%\syswow64\odbcad32.exe
  • x64 версия: %windir%\system32\odbcad32.exe

Другой способ проверить наличие драйвера, который можно реализовать программно, это просмотреть список параметров реестра в ветке установленных драйверов:

[ HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBCINST . INI \ ODBC Drivers ]

Точное имя установленного драйвера будет необходимо для установки соединения в программном модуле 1С.

Все операции с сервером MySQL в программе необходимо выполнять через установленное соединение, которое реализуется универсальным COM-объектом типа Connection в его методе .Open(<строка подключения>, [<логин>], [<пароль>], [<опции>]) использующем специально подготовленную строку подключения.

Пример установки соединения:

СтрокаПодключения = СтрШаблон ( "DRIVER=; SERVER=%1; DATABASE=%2; PORT=%3; UID=%4; PWD=%5; MULTI_STATEMENTS=1; MULTI_RESULTS=1; STMT=SET CHARACTER SET utf8" , Хост , БазаДанных , Порт , Логин , Пароль ) ;

При успешной установке соединения свойство .State устанавливается в 1, а в случае ошибки остается в состоянии 0. Коллекция ошибок типа Errors доступна в объекте соединения, однако в нее попадают ошибки только уровня сервера, которые возникают после установки соединения с сервером. Если ошибка возникла до установки соединения по сетевой или иной причине, ошибка в коллекцию .Errors не попадет.

Для завершения работы с установленным соединением его желательно закрыть:

После успешного установления соединения сервером MySQL можно управлять посредством sql-выражений в пределах прав установленных для пользователя, логин которого был использован при подключении. Существует два способа выполнения sql-выражений: непосредственно через объект соединения; через дополнительный объект команды.

Запросы Соединения

Успешно открытый объект соединения типа Connection может передать на сервер MySQL sql-выражение для выполнения используя метод .Execute(<выражение>[, <обработано>[, <опции>]]), где:

В данной статье приведены экземпляры кода на языке 1С, которые позволяют подключаться к базе данных на SQL-сервере, получать из нее данные, а также записывать новые и обновлять существующие записи в таблицах этой базы данных. Код протестирован на платформе 8.3.5, а также на версиях SQL Server 2008 R2 и SQL Server 2012. Операционная система Windows Server 2008 и Windows Server 2012. Есть предположение, что указанный код будет работать и на других версиях 1С, SQL и Windows.

0. Оглавление

1. Постановка задачи

Итак, имеется SQL-сервер с адресом WIN2012\TEST_SQL. Для подключения используется имя входа SQL-сервера UserDB с паролем Pass123456.

podkly-k-sql-iz-1s_004

На сервере размещена база данных с именем TestDB. В базе имеется таблица с именем Table_1, в которой 3 столбца:

podkly-k-sql-iz-1s_001

Изначально таблица пустая:

podkly-k-sql-iz-1s_002

У пользователя UserDB есть права на чтение и запись в базу данных TestDB. В данном случае пользователь является владельцем указанной базы данных.

podkly-k-sql-iz-1s_003

Требуется научиться записывать в базу данных и читать из базы данных из 1С при помощи прямых запросов к SQL-серверу.

2. Подключение к SQL-серверу

Весь приведенный ниже код может работать как на клиенте, так и на сервере. Главное чтобы был доступен COM-объект «ADODB» (подробнее о данной библиотеке можно прочитать, например, здесь). Также с клиента (или с сервера, смотря где выполняется код) должен быть доступен указанный SQL-сервер (настроено правило в Брандмауере для возможности внешнего подключения). Код приводится совсем простой, для понимания с чего вообще начинать разработчику, который раньше с этим не сталкивался.

Итак, для подключения необходимо создать COM-объект «ADODB». Для этого выполняется код 1С:

Результат работы в 1С:Предприятии:

podkly-k-sql-iz-1s_005

Теперь, в общем то, можно выполнять любой запрос SQL через данный COM-объект. Посмотрим как это делать на самых распространенных примерах.

3. Добавление записей в таблицу

Теперь добавим новую строку в нашу пока еще пустую таблицу. Для этого необходимо выполнить код:

Смотрим результат и видим, что строка появилась в таблице:

podkly-k-sql-iz-1s_006

4. Обновление записей в таблице

Теперь попробуем обновить все записи в таблице со значением C_Numeric=123456. Для этого выполняем код:

Проверяем, что запись обновилась:

podkly-k-sql-iz-1s_007

5. Просмотр выборки из таблицы

Писать и обновлять записи в таблице мы научились. Теперь посмотрим как просматривать выборку из запроса с SQL-сервера:

Результат в предприятии:

6. Удаление записей из таблицы

Для удаления всех записей в таблице со значением C_Numeric=123456 выполняем код:

Проверяем, что записей в таблице не осталось:

podkly-k-sql-iz-1s_009

7. Закрытие соединения

Ну и после выполнения всех необходимых действий необходимо закрыть соединение с SQL-сервером. Для этого достаточно вызвать метод Close() созданного COM-объекта:

8. Общий текст процедуры

Общий текст всей процедуры получился следующий:

Результат работы в 1С:Предприятии:

podkly-k-sql-iz-1s_010

Смотрите также:

В данном вебинаре я расскажу о применяемых в нашей компании правилах и приемах доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления. В видео использованы материалы…

Официально, платформа 1С:Предприятие 7.7 работает только с MS SQL Server 2000. Но с помощью небольших манипуляций можно организовать стабильную работу и с последней, на момент написания статьи, версий Microsoft SQL…

Небольшая зарисовка на тему, какие были бы сливные трубы, если бы их делали 1С-ники.

Очень часто от заказчиков поступает запрос по настройке обмена 1С с сайтом. И к нашему большому удивлению, оказывается, что у многих используется самописный сайт, к которому не «прикрутить» типовую интеграцию. Приходится писать обмен 1С с сайтом вручную. И в 90% случаев сайт

Но не только для сайтов подходит эта система управления базами данных (СУБД) MySQL. Любое стороннее программное обеспечение может с ней работать. И как раз в этой статье я и хочу разобраться как же работать с СУБД MySQL.

1. Пишем код в 1С для СУБД MySQL

После установки пишем код в 1С.

Инициализируем переменные.



Далее нам нужна строка соединения с базой данных.



Теперь устанавливаем соединение с базой.



Добавляем новую запись в таблицу.



Теперь прочитаем все записи из таблицы с выборкой в цикле.



Выполняем обновление/изменение данных.




Можно увидеть, что все три запроса выполнены по-разному. Но при этом всем они все корректны.


Можно выбрать для себя наиболее удобный вариант и использовать именно его.

2. Процесс удаления данных из таблиц 1С

Также нам может понадобиться удалить данные из таблиц 1С.


Здесь наиболее предпочтительными являются - построчное удаление либо полная очистка всей таблицы (с сохранением структуры). Выбирать наиболее подходящий способ нужно под конкретную задачу. Единственное, что следует учитывать, что построчное удаление занимает значительно больше времени нежели полная очистка.

Полная очистка базы 1С.



Построчное удаление.



В заключение скажу, что есть способ подключения внешних баз данных через объект конфигурации 1С «Внешние источники данных», но об этом мы поговорим уже в другой статье.

Читайте также: