Как подключиться из 1С к базе данных на Open Server Panel

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке комплексных систем, где веб-сайт выступает фронтендом, а 1С — бэкендом для обработки заказов, часто возникает задача прямой интеграции. В рамках локальной разработки, например, при выполнении курсовых проектов или создании прототипов, веб-стек часто разворачивается с помощью Open Server Panel (OSP). Рассмотрим подробно, как настроить получение данных в 1С из базы данных (обычно MySQL или MariaDB), которая работает внутри этого окружения.

Анализируем постановку задачи

Ситуация следующая: на локальном компьютере запущен Open Server, в котором крутится сайт и база данных. На этом же компьютере установлена 1С. Нам необходимо «навести мосты» между ними. Существует три основных подхода к решению этой задачи, и мы разберем каждый из них по шагам.

Способ 1: Прямое подключение через ADODB (COM-объект)

Этот метод считается классическим для интеграции «на лету» без изменения метаданных конфигурации 1С. Для его реализации нам потребуется технология Microsoft ActiveX Data Objects (ADO). Однако важно помнить: для того чтобы 1С «понимала» СУБД из Open Server, в операционной системе должен быть установлен соответствующий драйвер.

Шаг 1: Установка драйвера. Выясним, какая СУБД используется в OSP (чаще всего это MySQL). Вам необходимо скачать и установить MySQL ODBC Connector. Внимание: разрядность драйвера должна совпадать с разрядностью платформы 1С. Если вы используете 32-битную версию 1С, вам нужен 32-битный ODBC драйвер, даже если Windows у вас 64-битная.

Шаг 2: Программная реализация. Проанализируем пример кода для подключения. В отличие от MS SQL, строка подключения для MySQL будет иметь специфический формат. Разберем пример:


&НаКлиенте
Процедура ПодключитьсяКMySQL(Команда)
    
    // Параметры подключения к Open Server
    Сервер = "127.0.0.1"; // Или localhost
    Порт = "3306";
    БазаДанных = "имя_вашей_базы";
    Пользователь = "root";
    Пароль = ""; // В OSP по умолчанию пустой
    
    // Инициализация COM-объекта
    Попытка
        Соединение = Новый COMОбъект("ADODB.Connection");
        
        // Формируем строку соединения для MySQL ODBC драйвера
        СтрокаСоединения = "Driver={MySQL ODBC 8.0 Unicode Driver};" 
                         + "Server=" + Сервер + ";" 
                         + "Port=" + Порт + ";" 
                         + "Database=" + БазаДанных + ";" 
                         + "User=" + Пользователь + ";" 
                         + "Password=" + Пароль + ";" 
                         + "Option=3;";
        
        Соединение.ConnectionString = СтрокаСоединения;
        Соединение.Open();
        
        Сообщить("Успешное подключение к MySQL на Open Server!");
        
        // Пример выполнения простого запроса
        ЗапросSQL = "SELECT * FROM orders LIMIT 10";
        Рекордсет = Соединение.Execute(ЗапросSQL);
        
        Пока НЕ Рекордсет.EOF Цикл
            // Обработка данных
            Сообщить("Заказ №: " + Рекордсет.Fields("id").Value);
            Рекордсет.MoveNext();
        КонецЦикла;
        
        Соединение.Close();
        
    Исключение
        Сообщить("Ошибка подключения: " + ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры

Обратите внимание на параметр Driver. Его имя должно в точности совпадать с тем, как драйвер называется в системном окне «Источники данных ODBC».

Способ 2: Использование механизма «Внешние источники данных»

Если вы планируете работать с базой сайта постоянно, лучший способ — интегрировать её в дерево метаданных конфигурации 1С. Это позволит использовать стандартные запросы 1С (на языке 1С) к таблицам сайта.

Разберем алгоритм настройки:

  1. В конфигураторе перейдем в ветку Внешние источники данных.
  2. Создадим новый источник (например, СайтНаOSP).
  3. На вкладке «Таблицы» нажмем кнопку «Добавить». 1С предложит настроить строку подключения.
  4. Выберем пункт «Использовать строку соединения» и с помощью конструктора выберем установленный ранее MySQL ODBC Driver.
  5. После успешного теста соединения вы увидите список всех таблиц вашей базы в Open Server. Выберите нужные (например, таблицы заказов, пользователей или товаров).

Теперь данные из OSP будут доступны в коде так же легко, как и данные обычных справочников:


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ЗаказыСайта.id КАК Идентификатор,
               |    ЗаказыСайта.sum КАК Сумма
               |ИЗ
               |    ВнешнийИсточникДанных.СайтНаOSP.Таблица.orders КАК ЗаказыСайта";
Результат = Запрос.Выполнить();

Способ 3: Обмен через HTTP-сервисы (REST API)

Проанализируем архитектурно верный подход. Прямое подключение к базе данных считается «небезопасным» и жестко связывает две системы. Если вы измените структуру таблиц в PHP-коде сайта, 1С «сломается». Чтобы этого избежать, используем HTTPСоединение.

Схема работы:

  1. На стороне Open Server (в PHP) создадим файл (скрипт), который по запросу будет выбирать данные из базы и отдавать их в формате JSON.
  2. В 1С будем обращаться к этому скрипту по URL.

Пример кода на стороне 1С:


&НаСервере
Процедура ПолучитьДанныеССервера()
    
    Сервер = "mysite.local"; // Домен в Open Server
    Соединение = Новый HTTPСоединение(Сервер);
    Запрос = Новый HTTPЗапрос("/api/get_orders.php");
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            Содержимое = Ответ.ПолучитьТелоКакСтроку();
            // Далее используем ЧтениеJSON для разбора данных
            Сообщить("Данные получены: " + Содержимое);
        КонецЕсли;
    Исключение
        Сообщить("Ошибка связи: " + ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Важные технические нюансы

Проанализируем проблемы, с которыми вы можете столкнуться при интеграции 1С и Open Server Panel:

1. Проблема кодировки. 1С работает в Unicode (UTF-16). Базы данных в OSP часто используют UTF-8 или cp1251. При использовании ADODB, если вместо русских букв вы видите вопросы или «кракозябры», сразу после открытия соединения выполните команду:

Соединение.Execute("SET NAMES cp1251");

Это заставит MySQL отдавать данные в кодировке, которую Windows-компоненты ADO поймут корректно.

2. Настройки доступа в MySQL. По умолчанию пользователь root в Open Server может подключаться только с localhost (127.0.0.1). Если 1С и OSP на одном ПК — проблем нет. Но если вы попытаетесь подключиться с другого компьютера в сети, вам нужно будет в phpMyAdmin выдать права пользователю для доступа с хоста %.

3. Особенности Open Server 6. В новейших версиях OSP (6.0 и выше) модули СУБД изолированы. Убедитесь, что в настройках модуля MySQL разрешены внешние порты, и вы используете правильный IP-адрес. В ряде случаев указание 127.0.0.1 работает стабильнее, чем localhost.

Резюме

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

← На главную