Администрирование · 10 мин
Как подключиться к MySQL из 1С: пошаговая инструкция
Как подключиться к MySQL из 1С: настройка ODBC-драйвера, строка подключения, примеры кода, внешние источники данных, типичные ошибки и проверка результата.
Прямого встроенного драйвера MySQL в платформе 1С нет, поэтому подключение организуется через промежуточный слой — чаще всего через ODBC-драйвер MySQL и объект ADODB.Connection, либо через механизм внешних источников данных. Оба подхода рабочие, но различаются по гибкости, требованиям к правам и удобству сопровождения.
Типовые сценарии, где это нужно: обмен данными с интернет-магазином на MySQL, выгрузка заказов с сайта, синхронизация справочников с внешней учётной системой, чтение данных из самописных сервисов. Во всех случаях 1С выступает клиентом, который подключается к уже работающему серверу MySQL.
Перед началом работы убедитесь, что у вас есть: адрес и порт сервера MySQL, имя базы данных, учётная запись с достаточными правами и сетевой доступ к серверу с компьютера, где работает 1С (или с сервера 1С, если база клиент-серверная). Без этих данных настройка превратится в подбор параметров вслепую.
Выбор способа подключения: ADODB или внешние источники данных
Существует два основных пути. Первый — подключение через COM-объект ADODB.Connection с выполнением SQL-запросов напрямую из кода 1С. Это универсальный способ: он работает и в файловом, и в клиент-серверном варианте, позволяет выполнять любые запросы, включая INSERT и UPDATE, и не требует изменения конфигурации.
Второй путь — механизм внешних источников данных (ВИД), встроенный в платформу. Он позволяет описать таблицы MySQL как объекты конфигурации и работать с ними почти как с обычными таблицами 1С: строить отчёты через СКД, использовать в запросах. Минус — требуется доработка конфигурации и права разработчика, а также настроенный ODBC-источник на каждом рабочем месте.
Сравнение вариантов
Подходит для разовых обменов, регламентных загрузок и записи в MySQL. Не требует изменения конфигурации, но весь обмен описывается кодом.
Подходят для постоянной интеграции и отчётов по данным MySQL. Требуют доработки конфигурации и настройки ODBC на каждом клиенте.
Подходит, когда прямой доступ к MySQL закрыт сетевыми политиками. Медленнее, но безопаснее и проще в согласовании.
Если задача — периодически забирать заказы с сайта, начните с ADODB: решение быстрее внедряется и легче отлаживается. Внешние источники данных оправданы, когда данные MySQL нужны пользователям в отчётах ежедневно.
Установка и настройка ODBC-драйвера MySQL
Скачайте MySQL Connector/ODBC с официального сайта MySQL. Критически важный момент — разрядность: драйвер должен совпадать с разрядностью клиента 1С, а не операционной системы. На 64-битной Windows с 32-битным клиентом 1С нужен 32-битный драйвер, и настраивать его следует через 32-битную версию администратора ODBC.
После установки откройте «Администратор источников данных ODBC» (для 32-битного драйвера — файл odbcad32.exe из папки SysWOW64). Создайте источник на вкладке «Системный DSN», чтобы он был доступен всем пользователям и службе сервера 1С. Укажите адрес сервера, порт (по умолчанию 3306), имя пользователя, пароль и базу данных.
- 1Установите MySQL Connector/ODBC нужной разрядности
- 2Откройте администратор ODBC соответствующей разрядности
- 3Создайте системный DSN с параметрами сервера и базы
- 4Нажмите Test и убедитесь, что соединение успешно
- 5Проверьте подключение из 1С тестовым запросом
Кнопка Test в настройщике DSN — первый контрольный рубеж. Если тест не проходит, проблема в сети, логине или правах, и разбираться с ней нужно до написания кода в 1С. Типичные причины отказа: закрытый порт на файрволе, учётная запись MySQL с ограничением по хосту (user@localhost вместо user@%) и отсутствие прав на конкретную базу.
Подключение через ADODB: пример кода
Подключение из кода 1С выполняется через COM-объект. Ниже типовой фрагмент чтения данных:
Соединение = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Driver={MySQL ODBC 8.0 Unicode Driver};"
+ "Server=192.168.1.10;Port=3306;Database=shop;"
+ "User=reader;Password=secret;Option=3;";
Соединение.Open(СтрокаПодключения);
Результат = Соединение.Execute("SELECT id, name, price FROM products LIMIT 100");
Пока НЕ Результат.EOF Цикл
Сообщить(Результат.Fields("name").Value);
Результат.MoveNext();
КонецЦикла;
Результат.Close();
Соединение.Close();
Имя драйвера в строке подключения должно точно совпадать с именем, установленным в системе, — его можно посмотреть на вкладке «Драйверы» администратора ODBC. Вместо прямого указания драйвера можно использовать созданный ранее DSN: DSN=MyShop;UID=reader;PWD=secret;.
Всегда закрывайте Recordset и Connection после использования, желательно в конструкции попытки/исключения. Незакрытые соединения накапливаются на стороне MySQL и со временем упираются в лимит max_connections, после чего подключения начинают отклоняться для всех клиентов.
Подключение через внешние источники данных
В конфигураторе откройте ветку «Внешние источники данных» и создайте новый источник. В параметрах укажите СУБД «Другое», строку соединения через ODBC-драйвер и учётные данные. После этого платформа покажет список таблиц MySQL, из которых можно выбрать нужные — они появятся в дереве конфигурации как таблицы внешнего источника.
Типы данных MySQL платформа сопоставляет автоматически, но не всегда корректно: поля DECIMAL могут потерять точность, а TEXT-поля иногда обрезаются. Проверьте типы ключевых колонок вручную и при необходимости скорректируйте их в свойствах таблицы источника.
Учтите ограничение: в файловом варианте базы внешние источники данных работают только в толстом клиенте. В клиент-серверном варианте ODBC-драйвер и DSN должны быть настроены на сервере 1С, а не на компьютерах пользователей — иначе запросы будут падать с ошибкой подключения.
Проверка результата и типичные ошибки
После настройки выполните минимальный тест: откройте соединение и выполните запрос SELECT 1. Успешное выполнение подтверждает, что драйвер, сеть и учётные данные в порядке. Затем проверьте чтение реальной таблицы с ограничением строк и сравните несколько значений с данными в самой MySQL-базе.
Отдельно о кодировке: если данные в MySQL хранятся в UTF-8, добавьте в строку подключения параметр charset или выполните сразу после подключения запрос SET NAMES utf8mb4. Иначе русские тексты будут прочитаны с искажениями, а запись в MySQL создаст в базе испорченные значения.
Как проверить результат
Сообщение об успешном соединении
Ошибка доступа, таймаут или отказ в соединении
Запрос выполняется без исключения
Ошибка создания COM-объекта или подключения
Текст совпадает с данными в MySQL
Знаки вопроса или иероглифы вместо кириллицы
Число соединений стабильно между обменами
Число соединений постоянно растёт
Ограничения и альтернативы прямому подключению
Прямое подключение к MySQL требует открытого сетевого доступа к порту базы, что не всегда допустимо по политикам безопасности — особенно если MySQL обслуживает публичный сайт. Открывать порт 3306 наружу ради обмена с 1С — плохая практика: база сразу становится целью для сканирования и подбора паролей.
Более безопасные альтернативы: VPN-туннель между офисом и хостингом, SSH-туннель до сервера MySQL, либо обмен через веб-сервис (HTTP API) на стороне сайта. Вариант с веб-сервисом требует разработки на стороне сайта, но полностью снимает вопрос прямого доступа к базе и даёт контроль над тем, какие данные отдаются.
Ещё одно ограничение — производительность. ADODB подходит для пакетной загрузки тысяч и десятков тысяч записей, но для миллионных выгрузок лучше переносить данные файлами (CSV или промежуточная таблица) либо читать порциями с явным ограничением диапазона ключей.
Что важно запомнить
Подключение 1С к MySQL строится через ODBC-драйвер: для разовых обменов используйте ADODB.Connection, для постоянной интеграции — внешние источники данных. Совпадение разрядности драйвера и клиента, права учётной записи MySQL, кодировка соединения и закрытие соединений — четыре точки, где возникает большинство проблем.
Частые вопросы
Можно ли подключиться к MySQL из 1С без установки ODBC-драйвера?
Штатными средствами платформы — нет, промежуточный драйвер обязателен. Обойти установку можно только сменив способ обмена: через веб-сервис на стороне сайта, выгрузку в файл или промежуточную базу, к которой у 1С уже есть доступ.
Ошибка «Data source name not found» — что проверять в первую очередь?
Разрядность: вы, скорее всего, создали DSN в 64-битном администраторе ODBC, а 1С работает в 32-битном режиме (или наоборот). Проверьте также точное имя драйвера в строке подключения — оно должно символ в символ совпадать с именем на вкладке «Драйверы».
Можно ли из 1С записывать данные в MySQL, а не только читать?
Да, через ADODB выполняются любые SQL-запросы, включая INSERT, UPDATE и DELETE. Учётной записи MySQL нужны соответствующие права. Рекомендуется писать в отдельные таблицы-буферы, а не напрямую в рабочие таблицы сайта, чтобы не нарушить его логику.
Почему кириллица из MySQL отображается знаками вопроса?
Кодировка соединения не совпадает с кодировкой данных. Выполните сразу после подключения запрос SET NAMES utf8mb4 или укажите charset в строке подключения. Если искажения уже записаны в базу, их придётся исправлять на стороне MySQL.
Работают ли внешние источники данных в файловой базе 1С?
Работают, но только в толстом клиенте. В тонком и веб-клиенте для файлового варианта внешние источники данных недоступны — используйте ADODB или переходите на клиент-серверный вариант.
Насколько безопасно открывать порт MySQL для подключения из офиса?
Открывать порт 3306 в интернет небезопасно даже с сильным паролем. Минимальный набор мер: ограничение доступа по IP на файрволе, отдельная учётная запись с минимальными правами, а лучше — VPN или SSH-туннель, при котором порт наружу не открывается вовсе.