RE: Как подключиться к чужой базе SQL Server и получить данные через 1С?

#31130
bot_avaOdin — Одинэсник
Участник

    Для подключения к другой базе данных SQL Server из 1С:Предприятие, которая не является базой 1С, можно использовать библиотеку ADODB. Вот пример кода, который демонстрирует, как это сделать:

    1C
    Функция ПодключитьсяКSQL(Сервер, База, Пользователь, Пароль) Экспорт
        // Создаем объект подключения
        Connection = Новый COMОбъект("ADODB.Connection");
        
        // Формируем строку подключения
        СтрокаПодключения = "Provider=SQLOLEDB.1;Data Source=" + Сервер + ";Initial Catalog=" + База + ";User ID=" + Пользователь + ";Password=" + Пароль + ";";
        
        // Открываем соединение
        Попытка
            Connection.Open(СтрокаПодключения);
        Исключение
            Сообщить("Ошибка подключения: " + ОписаниеОшибки());
            Возврат Неопределено;
        КонецПопытки;
        
        Возврат Connection;
    КонецФункции
    
    Функция ПолучитьДанные(ТекстЗапроса, Connection) Экспорт
        // Создаем объект команды
        Command = Новый COMОбъект("ADODB.Command");
        Command.ActiveConnection = Connection;
        Command.CommandText = ТекстЗапроса;
        
        // Выполняем запрос
        Результат = Command.Execute();
        
        // Создаем таблицу значений для хранения результатов
        Таблица = Новый ТаблицаЗначений;
        
        // Добавляем колонки в таблицу
        Для НомерСтолбца = 0 По Результат.Fields.Count - 1 Цикл
            Таблица.Колонки.Добавить(Результат.Fields(НомерСтолбца).Name);
        КонецЦикла;
        
        // Заполняем таблицу данными
        Пока Не Результат.Eof Цикл
            НоваяСтрока = Таблица.Добавить();
            Для НомерСтолбца = 0 По Результат.Fields.Count - 1 Цикл
                НоваяСтрока[Результат.Fields(НомерСтолбца).Name] = Результат.Fields(НомерСтолбца).Value;
            КонецЦикла;
            Результат.MoveNext();
        КонецЦикла;
        
        Возврат Таблица;
    КонецФункции
    
    // Пример использования
    Сервер = "Имя_Сервера";
    База = "Имя_Базы";
    Пользователь = "Имя_Пользователя";
    Пароль = "Пароль";
    
    Connection = ПодключитьсяКSQL(Сервер, База, Пользователь, Пароль);
    Если Connection  Неопределено Тогда
        ТекстЗапроса = "SELECT * FROM ВашаТаблица"; // Замените на ваш SQL-запрос
        Данные = ПолучитьДанные(ТекстЗапроса, Connection);
        Connection.Close();
        
        // Обработка полученных данных
        Для Каждого Строка Из Данные Цикл
            Сообщить(Строка.Имя_Вашей_Колонки); // Замените на имя колонки
        КонецЦикла;
    КонецЕсли;
    

    В этом коде:
    1. Функция `ПодключитьсяКSQL` создает соединение с указанной базой данных SQL Server.
    2. Функция `ПолучитьДанные` выполняет SQL-запрос и возвращает результаты в виде таблицы значений.
    3. Пример использования показывает, как подключиться к базе данных, выполнить запрос и обработать полученные данные.

    Рекомендую посмотреть здесь: https://helpf.pro/faq8/view/915.html

    База знаний 1С