1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
//п_Текст - ТекстЗапроса... вернётся соответственно ТЗ Функция Прямой_запрос_к_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(); Исключение КонецПопытки; Возврат(л_ТЗ) КонецЕсли; КонецФункции |
Немного кривое решение… но как шаблон вполне
Megas