К статье
Практический материал

Администрирование · 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-источник на каждом рабочем месте.

Сравнение вариантов

ADODB.Connection

Подходит для разовых обменов, регламентных загрузок и записи в 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), имя пользователя, пароль и базу данных.

Порядок настройки DSN
  1. 1
    Установите MySQL Connector/ODBC нужной разрядности
  2. 2
    Откройте администратор ODBC соответствующей разрядности
  3. 3
    Создайте системный DSN с параметрами сервера и базы
  4. 4
    Нажмите Test и убедитесь, что соединение успешно
  5. 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-базе.

Типичные ошибки
01
Несовпадение разрядности ODBC-драйвера и клиента 1С — драйвер не виден в списке или возникает ошибка создания COM-объекта
02
Учётная запись MySQL с привязкой к localhost — подключение с другого компьютера отклоняется даже с верным паролем
03
Неточное имя драйвера в строке подключения — ошибка 'Data source name not found'
04
Незакрытые соединения в коде — исчерпание лимита подключений MySQL
05
Кодировка соединения не совпадает с кодировкой базы — кириллица превращается в знаки вопроса

Отдельно о кодировке: если данные в MySQL хранятся в UTF-8, добавьте в строку подключения параметр charset или выполните сразу после подключения запрос SET NAMES utf8mb4. Иначе русские тексты будут прочитаны с искажениями, а запись в MySQL создаст в базе испорченные значения.

Контрольные точки

Как проверить результат

Тест кнопкой Test в настройках DSN
Норма

Сообщение об успешном соединении

Тревожный признак

Ошибка доступа, таймаут или отказ в соединении

Запрос SELECT 1 из кода 1С
Норма

Запрос выполняется без исключения

Тревожный признак

Ошибка создания COM-объекта или подключения

Чтение русскоязычного поля
Норма

Текст совпадает с данными в MySQL

Тревожный признак

Знаки вопроса или иероглифы вместо кириллицы

Количество соединений на сервере 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-туннель, при котором порт наружу не открывается вовсе.