Разработка и Конфигурация · 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С. Простой запасной вариант, когда прямое подключение невозможно из-за сетевых ограничений.
Сравнение вариантов
Универсально, чтение и запись, работает в любой конфигурации без изменения метаданных. Минус — соединение открывается в коде, нужно аккуратно управлять ошибками.
Таблицы MySQL видны в запросах и отчетах СКД. Минус — требуется доработка конфигурации, режим совместимости не ниже 8.2.14, изменение данных ограничено.
Лучший вариант для постоянной интеграции с интернет-магазином: не нужен прямой доступ к БД, проще безопасность. Минус — нужна разработка 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Установите MySQL Connector/ODBC нужной разрядности на машину, где будет выполняться соединение (клиент 1С или сервер 1С).
- 2Создайте в MySQL отдельного пользователя с правами только на нужную базу и нужные операции.
- 3Проверьте сетевую доступность: telnet адрес_сервера 3306 с машины 1С.
- 4Настройте системный DSN и проверьте соединение кнопкой Test.
- 5Протестируйте простой SELECT из 1С через ADODB, затем переносите логику в рабочий код.
Шаг 2. Подключение через ADODB: код и нюансы
Способ работает в толстом клиенте, тонком клиенте (если код выполняется на сервере) и в фоновых заданиях. Соединение создается через COM-объект ADODB.Connection, запросы выполняются методом Execute, результат читается через ADODB.Recordset.
СтрокаПодключения = "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. Успешное выполнение означает, что драйвер, сеть и права настроены корректно. Дальше проверяйте чтение кириллицы и дат — именно на них чаще всего всплывают проблемы кодировки и форматов.
Как проверить результат
Кнопка Test возвращает «Connection successful»
Ошибка доступа или таймаут — проверяйте сеть, порт и права пользователя
Текст приходит в 1С без искажений
Вопросительные знаки или кракозябры — неверный драйвер или кодировка таблицы
Значение имеет тип Дата и корректное значение
Строка или пустое значение — проверяйте формат и тип поля
SHOW PROCESSLIST показывает единичные соединения от 1С
Десятки «спящих» соединений — код не закрывает подключения
Безопасность и ограничения прямого подключения
Прямой доступ из 1С к MySQL означает, что учетные данные базы сайта хранятся в коде или настройках 1С. Минимизируйте риски: выделенный пользователь с правами только на нужные таблицы, ограничение по IP-адресу в грантах MySQL, хранение пароля в защищенном хранилище или параметрах сеанса, а не открытым текстом в общем модуле.
Учитывайте и производительность: каждый запрос из 1С — это нагрузка на MySQL, который обслуживает сайт. Тяжелые выборки без индексов могут «подвесить» магазин. Запускайте обмены в непиковые часы, выбирайте данные порциями и по индексированным полям, а для массовой репликации рассмотрите вариант с отдельной репликой MySQL для чтения.
Как выбрать действие
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 с соответствующим значением и проверяйте результат на тестовой строке.