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

Разработка и Конфигурация · 12 мин

Как подключить 1С к MySQL: рабочие способы и настройка

Подробная инструкция по подключению 1С к базе MySQL: установка ODBC-драйвера, настройка DSN, работа через внешние источники данных и ADO, типичные ошибки и их решение.

Прямого штатного механизма «1С + MySQL» не существует: 1С:Предприятие работает с собственной СУБД, MS SQL Server, PostgreSQL, Oracle и IBM Db2. Однако обмен данными с MySQL нужен часто — например, когда интернет-магазин на PHP хранит заказы в MySQL, а учет ведется в 1С. Задача решается несколькими проверенными способами: через ODBC-драйвер и COM-объект ADODB, через механизм внешних источников данных, либо через промежуточный веб-сервис.

Выбор способа зависит от сценария. Если нужно разово выгрузить данные или периодически читать таблицы MySQL — достаточно ADODB через ODBC. Если таблицы MySQL должны выглядеть внутри 1С как обычные объекты с возможностью строить по ним отчеты — подойдут внешние источники данных (ВИД). Для постоянной двусторонней интеграции с сайтом надежнее REST API или HTTP-сервисы.

В статье разобраны оба основных пути с кодом, настройкой драйвера и типичными ошибками. Инструкции применимы к платформе 1С:Предприятие 8.3 и MySQL 5.7/8.0, работающим на Windows-сервере. Для Linux-сервера 1С принципы те же, но настройка ODBC выполняется через unixODBC и конфигурационные файлы.

Способы подключения: что выбрать под вашу задачу

Прежде чем настраивать соединение, определите сценарий обмена. От этого зависит и технология, и объем доработок конфигурации.

  • ADODB через ODBC — код на встроенном языке 1С открывает соединение, выполняет SQL-запросы к MySQL и обрабатывает результат. Подходит для регламентных заданий обмена, разовых загрузок, записи данных из 1С в MySQL.
  • Внешние источники данных (ВИД) — объекты метаданных конфигурации, которые ссылаются на таблицы MySQL. Данные доступны в запросах 1С, СКД и отчетах почти как родные таблицы.
  • Промежуточный веб-сервис — на стороне сайта делается API (PHP/Python), 1С обращается к нему по HTTP. MySQL остается «за» сервисом. Самый надежный вариант для постоянной интеграции, но требует разработки на стороне сайта.
  • Файловый обмен — выгрузка из MySQL в CSV/XML и загрузка в 1С. Простой запасной вариант, когда прямое подключение невозможно из-за сетевых ограничений.

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

ADODB + ODBC

Универсально, чтение и запись, работает в любой конфигурации без изменения метаданных. Минус — соединение открывается в коде, нужно аккуратно управлять ошибками.

Внешние источники данных

Таблицы MySQL видны в запросах и отчетах СКД. Минус — требуется доработка конфигурации, режим совместимости не ниже 8.2.14, изменение данных ограничено.

HTTP API на стороне сайта

Лучший вариант для постоянной интеграции с интернет-магазином: не нужен прямой доступ к БД, проще безопасность. Минус — нужна разработка API.

Обмен файлами

Работает без сетевого доступа к MySQL. Минус — нет оперативности, возможны расхождения версий файлов.

Шаг 1. Установка и настройка ODBC-драйвера MySQL

Оба способа прямого подключения опираются на ODBC-драйвер. Скачайте MySQL Connector/ODBC с официального сайта MySQL. Критически важный момент — разрядность: для 64-битного клиента 1С нужен 64-битный драйвер, для 32-битного — 32-битный. Если сервер 1С 64-разрядный и соединение выполняется на сервере — ставьте 64-битный драйвер на сервер 1С.

После установки драйвера создайте DSN-источник или используйте строку подключения без DSN. DSN удобен для отладки: откройте «Администрирование → Источники данных ODBC» нужной разрядности, добавьте системный DSN, укажите адрес сервера MySQL, порт (по умолчанию 3306), имя базы, пользователя и пароль, затем нажмите Test — соединение должно пройти успешно.

Также проверьте сетевую доступность: MySQL должен принимать подключения с адреса сервера 1С. В конфигурации MySQL параметр bind-address не должен быть ограничен 127.0.0.1, если сервер 1С — другая машина, а в брандмауэре должен быть открыт порт 3306. Права пользователя MySQL задаются с учетом хоста: 'user'@'localhost' и 'user'@'%' — разные учетные записи.

Порядок действий
  1. 1
    Установите MySQL Connector/ODBC нужной разрядности на машину, где будет выполняться соединение (клиент 1С или сервер 1С).
  2. 2
    Создайте в MySQL отдельного пользователя с правами только на нужную базу и нужные операции.
  3. 3
    Проверьте сетевую доступность: telnet адрес_сервера 3306 с машины 1С.
  4. 4
    Настройте системный DSN и проверьте соединение кнопкой Test.
  5. 5
    Протестируйте простой SELECT из 1С через ADODB, затем переносите логику в рабочий код.

Шаг 2. Подключение через ADODB: код и нюансы

Способ работает в толстом клиенте, тонком клиенте (если код выполняется на сервере) и в фоновых заданиях. Соединение создается через COM-объект ADODB.Connection, запросы выполняются методом Execute, результат читается через ADODB.Recordset.

bsl
СтрокаПодключения = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=192.168.1.10;Port=3306;Database=shop;Uid=user1c;Pwd=пароль;Option=3;";
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.Open(СтрокаПодключения);
Набор = Соединение.Execute("SELECT id, name, price FROM products LIMIT 100");
Пока НЕ Набор.EOF Цикл
    Сообщить(Строка(Набор.Fields("id").Value) + " | " + Набор.Fields("name").Value);
    Набор.MoveNext();
КонецЦикла;
Набор.Close();
Соединение.Close();

Обратите внимание на имя драйвера в строке подключения — оно должно точно совпадать с именем, установленным в системе (посмотрите на вкладке «Драйверы» в администраторе ODBC). Версии драйвера отличаются: «MySQL ODBC 8.0 Unicode Driver», «MySQL ODBC 5.3 Unicode Driver» и т.д. Используйте Unicode-вариант, иначе кириллица из MySQL придет в 1С в виде вопросительных знаков.

Параметр Option=3 включает стандартный набор флагов совместимости. Если планируется запись в MySQL, экранируйте строковые значения и приводите даты к формату 'YYYY-MM-DD HH:MM:SS' — MySQL строг к формату дат, и строка вида «01.02.2026» вызовет ошибку или некорректную запись.

Шаг 3. Внешние источники данных в конфигураторе

Внешние источники данных позволяют «подтянуть» таблицы MySQL в дерево метаданных и использовать их в запросах и отчетах СКД. В конфигураторе откройте ветку «Общие → Внешние источники данных», создайте новый объект, добавьте таблицу и укажите строку соединения с тем же ODBC-драйвером. Платформа прочитает структуру таблицы MySQL и создаст описание полей.

Чтобы источник заработал в пользовательском режиме, в свойствах конфигурации включите использование внешних источников, а в коде при старте сеанса задайте параметры соединения через УправлениеВнешнимиИсточникамиДанных — пароль в метаданных не хранится, его нужно передавать программно или вводить интерактивно. После этого таблицы доступны в конструкторе запросов с префиксом «ВнешнийИсточникДанных».

Ограничения: режим совместимости конфигурации должен быть не ниже 8.2.14, производительность запросов к внешним таблицам заметно ниже, чем к родным, а соединения с внешними таблицами в одном запросе могут работать медленно на больших объемах. Для тяжелой аналитики лучше периодически загружать данные из MySQL в регистры 1С.

Если отчет по внешнему источнику открывается дольше 10–15 секунд, перенесите загрузку в регламентное задание: раз в час читайте изменившиеся записи из MySQL через ADODB и пишите в регистр сведений. Отчеты стройте уже по регистру — это снимет нагрузку с MySQL и ускорит работу пользователей.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

После настройки проверьте соединение минимальным запросом, например SELECT 1 или чтением одной таблицы с LIMIT. Успешное выполнение означает, что драйвер, сеть и права настроены корректно. Дальше проверяйте чтение кириллицы и дат — именно на них чаще всего всплывают проблемы кодировки и форматов.

Типичные ошибки
01
Несовпадение разрядности драйвера и клиента 1С: 32-битный клиент не видит 64-битный DSN. Решение — установить драйвер нужной разрядности и настроить DSN в соответствующем администраторе ODBC.
02
Неверное имя драйвера в строке подключения: ошибка «Data source name not found». Скопируйте имя точно из списка драйверов ODBC.
03
Подключение под root или пользователем с host=localhost: MySQL отклоняет соединение с другого хоста. Создайте пользователя с правильным хостом и грантами.
04
ANSI-драйвер вместо Unicode: русские символы превращаются в знаки вопроса. Переключитесь на Unicode-драйвер и проверьте кодировку таблиц (utf8/utf8mb4).
05
Соединение не закрывается в коде: накапливаются открытые сессии MySQL до упора в max_connections. Всегда вызывайте Close() в блоке с обработкой исключений.
Контрольные точки

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

Тест DSN в администраторе ODBC
Норма

Кнопка Test возвращает «Connection successful»

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

Ошибка доступа или таймаут — проверяйте сеть, порт и права пользователя

Чтение строки с кириллицей
Норма

Текст приходит в 1С без искажений

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

Вопросительные знаки или кракозябры — неверный драйвер или кодировка таблицы

Чтение даты из MySQL
Норма

Значение имеет тип Дата и корректное значение

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

Строка или пустое значение — проверяйте формат и тип поля

Количество соединений в MySQL
Норма

SHOW PROCESSLIST показывает единичные соединения от 1С

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

Десятки «спящих» соединений — код не закрывает подключения

Безопасность и ограничения прямого подключения

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

Учитывайте и производительность: каждый запрос из 1С — это нагрузка на MySQL, который обслуживает сайт. Тяжелые выборки без индексов могут «подвесить» магазин. Запускайте обмены в непиковые часы, выбирайте данные порциями и по индексированным полям, а для массовой репликации рассмотрите вариант с отдельной репликой MySQL для чтения.

Маршрут решения

Как выбрать действие

Нужно периодически забирать заказы или справочники из MySQLADODB + регламентное задание, чтение порциями по дате изменения
Данные MySQL нужны в отчетах СКД рядом с данными 1СВнешние источники данных, при больших объемах — промежуточный регистр
Идет постоянная двусторонняя интеграция с сайтомHTTP API на стороне сайта, прямой доступ к MySQL отключить
Серверы в разных сетях без прямого доступа к MySQLОбмен файлами через защищенный каталог или API через интернет

FAQ

Итог

Что важно запомнить

1С подключается к MySQL через ODBC-драйвер: программно через ADODB или декларативно через внешние источники данных. Ключевые условия успеха — совпадение разрядности драйвера и клиента, Unicode-драйвер для кириллицы, отдельный пользователь MySQL с минимальными правами и корректное закрытие соединений в коде.

Можно ли подключить 1С к MySQL без установки драйверов?

Без ODBC-драйвера прямое подключение невозможно — ни ADODB, ни внешние источники данных не работают с MySQL напрямую. Альтернатива без драйвера — обмен через HTTP: на стороне сайта поднимается скрипт API, который читает MySQL и отдает JSON, а 1С обращается к нему через HTTPСоединение.

Работает ли подключение из файловой базы 1С?

Да, способ с ADODB работает и в файловом режиме — COM-объект создается на компьютере пользователя, поэтому ODBC-драйвер ставится на эту же машину. Внешние источники данных в файловом режиме также поддерживаются, если позволяет режим совместимости конфигурации.

Почему возникает ошибка «Класс не зарегистрирован» при создании COMОбъект?

Ошибка означает, что на машине, где выполняется код, не зарегистрирована компонента ADODB нужной разрядности или код запускается в среде без поддержки COM (например, на Linux-сервере 1С). Проверьте, где выполняется код — на клиенте или на сервере — и установите компоненты именно там. На Linux вместо ADODB используйте внешние источники данных или HTTP-обмен.

Можно ли из 1С записывать данные в MySQL?

Да, через ADODB выполняются любые SQL-запросы, включая INSERT и UPDATE, если у пользователя MySQL есть соответствующие права. Экранируйте строки, приводите даты к формату MySQL и оборачивайте пакетные вставки в транзакции, чтобы при сбое не осталось частично записанных данных. Внешние источники данных для записи подходят ограниченно.

Что делать, если MySQL работает на хостинге без доступа к порту 3306?

Многие shared-хостинги закрывают внешний доступ к MySQL. Варианты: включить удаленный доступ в панели хостинга (если поддерживается), организовать SSH-туннель до сервера, либо перейти на обмен через HTTP API — скрипт на самом хостинге имеет доступ к MySQL локально и отдает данные наружу по HTTPS.

Какая кодировка нужна для корректной работы с кириллицей?

Используйте Unicode-версию ODBC-драйвера и кодировку utf8mb4 в таблицах MySQL. Если таблицы в latin1 или cp1251, данные могут читаться с искажениями — тогда либо конвертируйте таблицы, либо добавляйте в строку подключения параметр charset с соответствующим значением и проверяйте результат на тестовой строке.