v8.x: Как получить выборку запросом из таблиц базы MySql - 1С-ИнтеГрация

v8.x: Как получить выборку запросом из таблиц базы MySql



Код 1C v 8.х

 //п_Текст - ТекстЗапроса... вернётся соответственно ТЗ

Функция Прямой_запрос_к_jabber(п_Текст) Экспорт

    л_ТЗ = Новый ТаблицаЗначений;

    л_число_попыток = 0;

    л_Запрос_выполнен = Ложь;

    Пока (л_Запрос_выполнен = Ложь) И (л_число_попыток <= 3) Цикл

        Если (гл_Соединение_jb.State = 0) Или (гл_Соединение_jb.DefaultDatabase <> "log_1c") Тогда

            гл_Соединение_jb = "";

            л_Параметры_соединения = "DRIVER={MySQL ODBC 5.1 Driver};OPTION=3;DATABASE=BAZADANNIH_IMYA;PWD=PAROLLLLL;PORT=3306;SERVER=ip_adres_servera;UID=admin";

            гл_Соединение_jb = Новый COMОбъект("ADODB.Connection");

            Попытка

                гл_Соединение_jb.Open(л_Параметры_соединения);

            Исключение

            КонецПопытки;

        КонецЕсли;

       

        л_Команда = Новый COMОбъект("ADODB.Command");

        л_Команда.ActiveConnection = гл_Соединение_jb;

        л_Команда.CommandText = п_Текст;

        л_Команда.CommandType = 1;

       

        л_Набор_записей = Новый COMОбъект("ADODB.Recordset");

        л_Набор_записей.CursorType = 3;

        л_число_попыток = л_число_попыток + 1;

        Попытка

            л_Набор_записей = л_Команда.Execute();

            л_Запрос_выполнен = Истина;

        Исключение

        КонецПопытки;

    КонецЦикла;

    Если (л_Запрос_выполнен = Ложь) Тогда

        Сообщить(ОписаниеОшибки());

        Возврат(л_ТЗ);

    Иначе

        л_Число_колонок = л_Набор_записей.Fields.Count - 1;

        Если (л_Число_колонок > -1) Тогда

            Для Ф = 0 По л_Число_колонок Цикл

                л_Колонка_добавлена = Ложь;

                л_Префикс = "";

                л_сч = 0;

                Пока (л_Колонка_добавлена = Ложь) Цикл

                    Попытка

                        л_ТЗ.Колонки.Добавить(л_Префикс + л_Набор_записей.Fields(Ф).Name);

                        л_Колонка_добавлена = Истина;

                    Исключение

                        л_Префикс = ?(л_сч = 0, "_", "_" + л_сч + "_");

                        л_сч = л_сч + 1;

                    КонецПопытки;

                КонецЦикла;

            КонецЦикла;

            Если (л_Набор_записей.EOF() = Истина) И (л_Набор_записей.BOF() = Истина) Тогда

            Иначе

                л_Набор_записей.MoveFirst();

                Пока (л_Набор_записей.EOF() = 0) Цикл

                    л_стр = л_ТЗ.Добавить();

                    Для Ф = 0 По л_Число_колонок Цикл

                        л_стр[Ф] = л_Набор_записей.Fields(Ф).Value;

                    КонецЦикла;

                    л_Набор_записей.MoveNext();

                КонецЦикла;

            КонецЕсли;

        КонецЕсли;

        Попытка

            л_Набор_записей.Close();

        Исключение

        КонецПопытки;

        Возврат(л_ТЗ)

    КонецЕсли;

КонецФункции

  

 



Назад в раздел