| 0
    
        Ненавижу 1С   гуру 01.02.21✎ 00:44 | 
        Почему может тупить закрытие ADODB.Connection на тонком клиенте?
 Вот код:
 
 Функция ПолучитьМассивСтруктурДанныхИзФайла(ИмяФайла,МассивПолей,НомерЛиста=1,НомерПервойСтрокиЗначений=0) Экспорт
 
 МассивОписанияПолей = МассивСтруктурОписанияПолей(МассивПолей);
 
 СтрокаСоединения = "
 | Provider=Microsoft.ACE.OLEDB.12.0;Data Source="""+СокрЛП(ИмяФайла)+""";
 | Extended Properties=""Excel 12.0 Xml;HDR=NO;ReadOnly=1""";
 Соединение = Новый COMОбъект("ADODB.Connection");
 Соединение.Open(СтрокаСоединения);
 
 SchemaTables = 20;
 RecordsetTables = Соединение.OpenSchema(SchemaTables);
 й = 1;
 ЛистНайден = Ложь;
 Пока НЕ RecordsetTables.Eof() Цикл
 Лист = RecordsetTables.Fields("TABLE_NAME").Value;
 Если й=НомерЛиста Тогда
 ЛистНайден = Истина;
 Прервать;
 КонецЕсли;
 RecordsetTables.MoveNext();
 й = й+1;
 КонецЦикла;
 RecordsetTables.Close();
 Если Не ЛистНайден Тогда
 ВызватьИсключение "Лист не найден!";
 КонецЕсли;
 
 
 Записи = Новый COMОбъект("ADODB.Recordset");
 ТекстЗапроса = "SELECT * FROM ["+Лист+"]";
 Записи.Open(ТекстЗапроса, Соединение);
 МассивДанных = Записи.GetRows().UnLoad();
 Записи.Close();
 Соединение.Close(); //<---------------------ВОТ ЗДЕСЬ! до 75% времени в замере работы обработки (но не всегда)
 Соединение = Неопределено;
 |  | 
    
        | 1
    
        acht   01.02.21✎ 01:06 | 
        (0) Пушо, ADO, оно по умолчанию своеобразно в пул пытается, не находя при этом понимания нижлежащего "Microsoft.ACE.OLEDB". Получай набор записей как результат ".Execute", и дай ему возможность пожить своей жизнью после выхода переменных из области видимости, без всяких там "= Неопределено"     |  |