Администрирование · 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 и драйвер 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Установите MySQL Connector/ODBC нужной разрядности на сервер 1С
- 2Создайте и проверьте системный DSN к базе MySQL
- 3В конфигураторе добавьте объект «Внешний источник данных» и таблицу
- 4Укажите строку подключения и сопоставьте поля таблицы
- 5Обновите конфигурацию и проверьте чтение данных запросом или отчётом
Подключение через ADODB.Connection (COM)
Если внешние источники данных недоступны — например, база файловая или нужна простая разовая выгрузка — используйте COM-объект ADODB.Connection. Он работает в толстом клиенте и на сервере 1С под Windows, не требует изменения конфигурации и позволяет выполнять любые SQL-запросы к MySQL через установленный ODBC-драйвер.
Типовой фрагмент кода выглядит так: создаётся объект ADODB.Connection, открывается строка подключения с указанием драйвера, сервера, базы и учётных данных, затем через ADODB.Recordset выполняется запрос и обходятся строки результата. Обязательно оборачивайте работу в попытку/исключение и закрывайте соединение, иначе при ошибках на сервере MySQL будут копиться «зависшие» сессии.
Соединение = Новый 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 в запросах и отчётах. Требует клиент-серверный режим и настройки конфигурации
Гибкие запросы без изменения конфигурации, работает в файловом режиме. Только Windows, нужен ODBC-драйвер, ручная обработка ошибок
Работает через интернет и с Linux-сервером 1С. Требует разработки скрипта на стороне сайта
Максимально просто и надёжно, но без оперативности в реальном времени
Проверка результата и типичные ошибки
Признак успешного подключения — выполнение простейшего запроса SELECT без исключения и получение осмысленных данных: названия товаров читаемы, кириллица не превращается в знаки вопроса, числа и даты распознаются корректно. Проверяйте соединение поэтапно: сначала тест DSN в администраторе ODBC, затем запрос из простого скрипта или утилиты, и только потом код в 1С. Так вы сразу локализуете, на каком уровне проблема — сеть, драйвер или код.
Самые частые ошибки: несовпадение разрядности драйвера ODBC и процесса 1С (источник данных не виден), закрытый порт или привязка MySQL к localhost (ошибка тайм-аута подключения), неверное имя драйвера в строке подключения, проблемы с кодировкой при использовании ANSI-драйвера вместо Unicode, а также отсутствие у пользователя MySQL прав на удалённое подключение с конкретного хоста — в MySQL права привязаны к паре «пользователь@хост».
Ограничения и безопасность
Любое прямое подключение к рабочей базе сайта создаёт нагрузку и риски. Тяжёлые запросы из 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-драйвера и тестируйте запросы на копии базы.