Интеграция 1С с внешними системами — частая задача для разработчика. Часто данные, например, с веб-сайта, хранятся в базе данных MySQL. В этой статье мы подробно разберем, как настроить соединение из 1С к MySQL, используя технологию ADODB, и какие "подводные камни" могут встретиться на пути. Проанализируем типичную ситуацию: вы установили MySQL (например, в составе пакета XAMPP), создали базу, но 1С отказывается к ней подключаться. Давайте выясним причину и настроим все по шагам.
Прежде всего, нужно понять, что 1С не умеет напрямую "общаться" с MySQL. Для этого нужен специальный посредник — ODBC-драйвер (Open Database Connectivity). Он выступает в роли переводчика, который преобразует запросы от 1С в команды, понятные для MySQL, и возвращает данные обратно. Именно от правильности выбора и настройки этого компонента зависит 90% успеха.
Поэтому первый и главный шаг — это установка официального ODBC-драйвера для MySQL (часто его называют MySQL Connector/ODBC). Скачать его можно с официального сайта MySQL.
Это самая частая причина, по которой соединение не устанавливается, даже если все остальные настройки верны. Разрядность (битность) установленного ODBC-драйвера обязательно должна совпадать с разрядностью клиента "1С:Предприятие", из которого вы запускаете код.
Как это работает в Windows x64?
В 64-разрядной версии Windows существуют две отдельные утилиты для администрирования источников данных ODBC. Важно запускать именно ту, которая соответствует разрядности вашего драйвера и клиента 1С:
%SYSTEMROOT%\System32\odbcad32.exe%SYSTEMROOT%\SysWOW64\odbcad32.exeЕсли вы установили 32-разрядный драйвер, но пытаетесь настроить его через 64-разрядную утилиту (которая обычно открывается по умолчанию из "Панели управления"), вы его там просто не увидите. И наоборот. Это вводит в заблуждение и создает впечатление, что драйвер не установился. Всегда проверяйте, что работаете в администраторе ODBC нужной разрядности!
После установки правильного драйвера можно переходить к коду в 1С. Для подключения мы будем использовать COM-объект ADODB.Connection. Ему нужно передать специальную строку, в которой указаны все параметры для доступа к базе.
Рассмотрим самый универсальный способ — без предварительного создания DSN (Data Source Name), когда все параметры указываются прямо в коде. Это делает ваше решение более переносимым.
Давайте посмотрим на готовый пример кода, который можно использовать в качестве основы. Разберем его по частям.
// Определим параметры для нашего подключения
Сервер = "localhost"; // или 127.0.0.1, если MySQL на том же компьютере
БазаДанных = "my_database"; // Имя вашей базы данных в MySQL
Пользователь = "root"; // Имя пользователя MySQL
Пароль = "your_password"; // Пароль пользователя
ИмяДрайвера = "MySQL ODBC 8.0 Unicode Driver"; // Точное имя драйвера
// Сформируем строку подключения
СтрокаПодключения = "DRIVER={" + ИмяДрайвера + "};"
+ "SERVER=" + Сервер + ";"
+ "DATABASE=" + БазаДанных + ";"
+ "UID=" + Пользователь + ";"
+ "PWD=" + Пароль + ";";
// Обернем попытку подключения в блок Попытка-Исключение для отлова ошибок
Попытка
// Создаем COM-объект для работы с ADO
Connection = Новый COMОбъект("ADODB.Connection");
// Открываем соединение, передавая нашу строку
Connection.Open(СтрокаПодключения);
Сообщить("Соединение с MySQL успешно установлено!");
// Здесь можно выполнять запросы к базе данных MySQL
// Например, получить данные из таблицы 'users'
// RecordSet = Connection.Execute("SELECT * FROM users");
// ... дальнейшая обработка данных ...
// Важно не забыть закрыть соединение после завершения работы
Connection.Close();
Исключение
Сообщить("Не удалось подключиться к MySQL! Проверьте параметры и драйвер.");
Сообщить(ОписаниеОшибки());
КонецПопытки;
DRIVER: Это самый важный параметр. Здесь должно быть точное имя установленного драйвера. Чтобы его узнать, откройте администратор ODBC нужной разрядности (odbcad32.exe) и перейдите на вкладку "Драйверы". Скопируйте имя оттуда. Рекомендуется использовать версии с "Unicode" в названии, чтобы избежать проблем с кодировками.SERVER: Адрес сервера, где работает MySQL. Если это ваш локальный компьютер, используйте localhost или 127.0.0.1. Если сервер в сети — его IP-адрес или доменное имя.DATABASE: Название базы данных, к которой вы хотите подключиться.UID: Имя пользователя MySQL (Login).PWD: Пароль этого пользователя.При получении данных из MySQL, содержащих русские буквы, вы можете столкнуться с неверной кодировкой (отображаются "кракозябры"). Чтобы это исправить, MySQL должен возвращать данные в кодировке, понятной для 1С (cp1251). Это можно указать прямо в строке подключения, добавив параметр STMT.
Модифицированная строка подключения будет выглядеть так:
СтрокаПодключения = СтрокаПодключения + "STMT=set character_set_results=cp1251;";
Этот параметр указывает серверу MySQL, в какой кодировке следует отдавать результаты запросов.
localhost. Если 1С находится на другом компьютере, нужно выдать права на подключение с его IP-адреса.Стоит упомянуть, что в современных версиях платформы "1С:Предприятие" (начиная с 8.2) есть встроенный механизм — Внешние источники данных. Он также работает через ODBC-драйвер, но позволяет интегрировать таблицы MySQL прямо в дерево конфигурации 1С. Это дает возможность обращаться к внешним таблицам через стандартные объекты 1С, например, Запрос, что гораздо удобнее и "нативнее", чем работа с ADODB.RecordSet. Если вам предстоит плотная и постоянная работа с данными из MySQL, рекомендуем изучить этот механизм.