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

Администрирование · 11 мин

Как подключить 1С к базе MySQL

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

Подключение 1С к базе MySQL понадобится, когда учётная система должна обмениваться данными с интернет-магазином, сайтом, CRM или другим приложением, которое хранит информацию в MySQL. Прямого «родного» механизма работы с MySQL в платформе 1С нет: в качестве основной СУБД поддерживаются Microsoft SQL Server, PostgreSQL, IBM DB2 и Oracle Database. Поэтому подключение всегда строится через обходные варианты — внешние источники данных, COM/ADO, веб-сервисы или файловый обмен.

Выбор способа зависит от задачи: нужен ли постоянный онлайн-доступ к таблицам MySQL или достаточно периодической выгрузки, какая версия платформы 1С используется, работает база в файловом или клиент-серверном режиме, есть ли доступ к серверу MySQL из сети, где развёрнута 1С. Ниже разобраны рабочие варианты с примерами кода, ограничениями и проверкой результата.

Все манипуляции с подключением выполняйте сначала на тестовой копии базы. Ошибки в строке подключения или правах доступа редко опасны сами по себе, но некорректные запросы на запись способны испортить данные в рабочей базе MySQL, от которой зависит сайт или интернет-магазин.

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

Прежде чем настраивать соединение, ответьте на три вопроса. Первый — направление обмена: 1С только читает данные из MySQL (например, забирает заказы с сайта) или должна ещё и записывать (обновлять остатки и цены). Второй — частота: разовая загрузка, регламентное задание каждые несколько минут или интерактивная работа пользователя с внешними таблицами. Третий — инфраструктура: где физически находится сервер MySQL и доступен ли он по сети с компьютера или сервера, где работает 1С.

Для постоянного чтения и записи таблиц MySQL прямо из интерфейса 1С подходят внешние источники данных. Для регламентных выгрузок по расписанию проще использовать ADODB.Connection — он работает и в файловом режиме, и на сервере 1С под Windows. Если сервер 1С работает под Linux или база MySQL находится на хостинге с закрытым прямым доступом, надёжнее всего обмен через HTTP-запросы к промежуточному скрипту или веб-сервису.

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

Как выбрать способ

Нужно работать с таблицами MySQL как с объектами 1С (запросы, формы, отчёты)Настройте внешний источник данных через ODBC-драйвер MySQL
Нужны периодические выгрузки по расписанию на WindowsИспользуйте ADODB.Connection через COM с драйвером MySQL ODBC или OLE DB
Сервер 1С на Linux или MySQL на внешнем хостинге без прямого доступаСделайте обмен через HTTP-запросы к промежуточному API или файлам
Нужна одноразовая миграция данныхВыгрузите данные из MySQL в CSV и загрузите типовой обработкой

Подготовьте сервер MySQL и драйвер ODBC

На стороне MySQL потребуется отдельная учётная запись для подключения из 1С. Не используйте root и учётные данные, под которыми работает сам сайт: создайте пользователя с минимально необходимыми правами — только SELECT, если 1С читает данные, и добавьте INSERT/UPDATE/DELETE только на конкретные таблицы, если нужна запись. Убедитесь, что сервер MySQL принимает внешние подключения: в конфигурации не должно быть привязки только к localhost, а в брандмауэре открыт порт MySQL (по умолчанию 3306) для адреса сервера 1С.

Для подключения через ODBC скачайте и установите MySQL Connector/ODBC с официального сайта MySQL. Важный нюанс — разрядность: для 32-битного клиента 1С нужен 32-битный драйвер, для 64-битного сервера 1С — 64-битный. Если разрядность не совпадёт, источник данных просто не появится в списке доступных. После установки создайте системный DSN через «Администрирование источников данных ODBC» в Windows, указав сервер, порт, имя базы, пользователя и пароль, и проверьте соединение кнопкой Test.

Подключение через внешние источники данных

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

Порядок настройки: в конфигураторе добавьте новый объект «Внешний источник данных», создайте в нём таблицу и укажите строку подключения ODBC — либо через созданный DSN, либо явно с параметрами драйвера. Затем сопоставьте поля таблицы MySQL полям объекта 1С, задайте ключевые поля. После обновления конфигурации таблица станет доступна в запросах и отчётах. Учтите, что производительность запросов к внешним таблицам ниже, чем к таблицам самой базы 1С, особенно при соединениях — по возможности фильтруйте данные на стороне MySQL.

Настройка внешнего источника данных
  1. 1
    Установите MySQL Connector/ODBC нужной разрядности на сервер 1С
  2. 2
    Создайте и проверьте системный DSN к базе MySQL
  3. 3
    В конфигураторе добавьте объект «Внешний источник данных» и таблицу
  4. 4
    Укажите строку подключения и сопоставьте поля таблицы
  5. 5
    Обновите конфигурацию и проверьте чтение данных запросом или отчётом

Подключение через ADODB.Connection (COM)

Если внешние источники данных недоступны — например, база файловая или нужна простая разовая выгрузка — используйте COM-объект ADODB.Connection. Он работает в толстом клиенте и на сервере 1С под Windows, не требует изменения конфигурации и позволяет выполнять любые SQL-запросы к MySQL через установленный ODBC-драйвер.

Типовой фрагмент кода выглядит так: создаётся объект ADODB.Connection, открывается строка подключения с указанием драйвера, сервера, базы и учётных данных, затем через ADODB.Recordset выполняется запрос и обходятся строки результата. Обязательно оборачивайте работу в попытку/исключение и закрывайте соединение, иначе при ошибках на сервере MySQL будут копиться «зависшие» сессии.

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

Имя драйвера в строке подключения должно точно совпадать с названием установленного ODBC-драйвера — посмотрите его на вкладке «Драйверы» в администраторе ODBC. Для корректной работы с кириллицей используйте Unicode-версию драйвера и следите, чтобы кодировка базы MySQL была utf8 или utf8mb4.

Обмен через веб-сервис или файлы

Когда прямое сетевое соединение невозможно или небезопасно — типичный случай для MySQL на shared-хостинге интернет-магазина — промежуточным звеном становится веб-сервис. На стороне сайта разворачивается скрипт (например, на PHP), который по HTTP-запросу отдаёт данные из MySQL в формате JSON или XML и принимает данные на запись. В 1С обращение выполняется через HTTPСоединение и HTTPЗапрос, ответ разбирается штатным ЧтениеJSON.

Файловый вариант ещё проще: скрипт на стороне сайта по расписанию выгружает заказы в CSV или XML, а 1С забирает файл по FTP или из общей папки и загружает обработкой. Этот способ устойчив к обрывам связи и прост в отладке, но не даёт оперативности: задержка обмена равна интервалу расписания. Для обратного направления — выгрузки остатков и цен на сайт — схема зеркальная: 1С формирует файл, сайт его импортирует.

Сравнение способов подключения

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

Полноценная работа с таблицами MySQL в запросах и отчётах. Требует клиент-серверный режим и настройки конфигурации

ADODB.Connection

Гибкие запросы без изменения конфигурации, работает в файловом режиме. Только Windows, нужен ODBC-драйвер, ручная обработка ошибок

Веб-сервис / HTTP API

Работает через интернет и с Linux-сервером 1С. Требует разработки скрипта на стороне сайта

Файловый обмен

Максимально просто и надёжно, но без оперативности в реальном времени

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

Признак успешного подключения — выполнение простейшего запроса SELECT без исключения и получение осмысленных данных: названия товаров читаемы, кириллица не превращается в знаки вопроса, числа и даты распознаются корректно. Проверяйте соединение поэтапно: сначала тест DSN в администраторе ODBC, затем запрос из простого скрипта или утилиты, и только потом код в 1С. Так вы сразу локализуете, на каком уровне проблема — сеть, драйвер или код.

Самые частые ошибки: несовпадение разрядности драйвера ODBC и процесса 1С (источник данных не виден), закрытый порт или привязка MySQL к localhost (ошибка тайм-аута подключения), неверное имя драйвера в строке подключения, проблемы с кодировкой при использовании ANSI-драйвера вместо Unicode, а также отсутствие у пользователя MySQL прав на удалённое подключение с конкретного хоста — в MySQL права привязаны к паре «пользователь@хост».

Типичные ошибки
01
Установлен ODBC-драйвер другой разрядности — 1С не видит источник данных
02
Используется root или учётка сайта — при утечке строки подключения компрометируется вся база
03
ANSI-драйвер вместо Unicode — кириллица превращается в кракозябры
04
Соединение не закрывается в коде — на MySQL копятся зависшие сессии и упирается в лимит подключений
05
Запросы без LIMIT и фильтров — выгрузка миллионов строк вешает клиент 1С

Ограничения и безопасность

Любое прямое подключение к рабочей базе сайта создаёт нагрузку и риски. Тяжёлые запросы из 1С могут замедлить интернет-магазин для покупателей, а запросы на запись — при ошибке в логике — испортить данные заказов. Правила безопасной работы: читайте только нужные поля с фильтрами, выносите массовые выгрузки в непиковое время, для записи используйте отдельные промежуточные таблицы, которые сайт обрабатывает своим штатным механизмом, а не прямые UPDATE в таблицы CMS.

Пароль от MySQL не должен храниться в открытом виде в коде общих модулей и тем более во внешних обработках, которые передаются между людьми. Используйте защищённое хранилище, константы с ограниченным доступом или параметры регламентного задания. Если обмен идёт через интернет, шифруйте канал: SSH-туннель, VPN или HTTPS для веб-сервиса.

Частые вопросы

Можно ли использовать MySQL как основную СУБД для базы 1С?

Нет. Платформа 1С в качестве сервера баз данных поддерживает Microsoft SQL Server, PostgreSQL (включая адаптированные сборки), IBM DB2 и Oracle Database. MySQL может выступать только как внешний источник данных для обмена, но не как хранилище самой информационной базы.

Почему 1С не видит созданный DSN в списке источников?

Чаще всего причина в разрядности: 64-битная 1С работает только с 64-битными DSN, 32-битная — с 32-битными. Проверьте, в какой версии администратора ODBC создан источник, и совпадает ли разрядность драйвера MySQL Connector/ODBC с разрядностью клиента или сервера 1С.

Работает ли ADODB.Connection на сервере 1С под Linux?

Нет, COM-объекты доступны только на Windows. Для Linux-сервера используйте внешние источники данных с ODBC или обмен через HTTP-запросы к промежуточному веб-сервису.

Как избежать проблем с кодировкой при чтении из MySQL?

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

Что выбрать для интеграции 1С с интернет-магазином на хостинге?

На shared-хостинге прямой доступ к MySQL извне обычно закрыт, поэтому оптимален обмен через HTTP: скрипт на стороне сайта принимает и отдаёт данные в JSON, а 1С обращается к нему по расписанию. Это безопаснее и не требует открытия портов базы наружу.

Опасно ли выполнять запросы на запись в базу сайта напрямую из 1С?

Да, это рискованно: прямой UPDATE или INSERT обходит логику CMS и может нарушить целостность данных (связи заказов, остатков, статусов). Безопаснее писать в отдельные промежуточные таблицы, которые сайт обрабатывает собственными механизмами импорта.

Итог

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

Прямого подключения 1С к MySQL нет — выбирайте внешние источники данных для постоянной работы, ADODB для выгрузок на Windows и HTTP-обмен для сайтов на хостинге. Создавайте отдельную учётку MySQL с минимальными правами, проверяйте разрядность ODBC-драйвера и тестируйте запросы на копии базы.