//Соединение - ADODB.Connection
//СписПарам - список параметров для параметризированного запроса (последний раз пользовался еще в 1с77)
//ТипЗапроса - установка параметра переменой CommandType
Функция ВыполнитьЗапрос(Соединение,Запрос="",СписПарам="",ТипЗапроса="") Экспорт
ТЗ = Новый ТаблицаЗначений;
Если ПустаяСтрока(Запрос)=1 Тогда
Сообщить("Запрос пуст!");
Возврат ТЗ;
КонецЕсли;
СоздЗапрос = Новый COMObject("ADODB.Command");
СоздЗапрос.ActiveConnection = Соединение;
Если ЗначениеЗаполнено(ТипЗапроса) Тогда
СоздЗапрос.CommandType = Число(ТипЗапроса);
КонецЕсли;
СоздЗапрос.CommandText = Запрос;
РезЗапроса = Новый COMObject("ADODB.RecordSet");
РезЗапроса.CursorType=0;
РезЗапроса.CursorLocation = 2;
Если ЗначениеЗаполнено(СписПарам) Тогда
Если СписПарам.Количество()<>0 Тогда
Для й=0 по СписПарам.Количество()-1 Цикл
Зн = СписПарам.Получить(й).Значение;
Стр= СписПарам.Получить(й).Представление;
СоздЗапрос.Parameters.Append(СоздЗапрос.CreateParameter(Стр, 200, 1, СтрДлина(Зн), Зн));
КонецЦикла;
КонецЕсли;
КонецЕсли;
Попытка
РезЗапроса = СоздЗапрос.Execute();
Исключение
Сообщить(Запрос);
КонецПопытки;
Если РезЗапроса.Fields.Count>0 Тогда
Если РезЗапроса.BOF()=0 Тогда
Для й=0 По РезЗапроса.Fields.Count-1 Цикл
Колонка = РезЗапроса.Fields.Item(й);
ТЗ.Колонки.Добавить(Колонка.Name);
КонецЦикла;
РезЗапроса.MoveFirst();
Пока РезЗапроса.EOF()=0 Цикл
СтрТб=ТЗ.Добавить();
Для й=0 По РезЗапроса.Fields.Count-1 Цикл
СтрТб[й]=Строка(РезЗапроса.Fields(РезЗапроса.Fields.Item(й).Name).Value);
КонецЦикла;
РезЗапроса.MoveNext();
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат ТЗ;
КонецФункции