Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Долгое закрытие ADODB.Connection на тонком клиенте

Долгое закрытие ADODB.Connection на тонком клиенте
Я
   Ненавижу 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% времени в замере работы обработки (но не всегда)
    Соединение = Неопределено;
   acht
 
1 - 01.02.21 - 01:06
(0) Пушо, ADO, оно по умолчанию своеобразно в пул пытается, не находя при этом понимания нижлежащего "Microsoft.ACE.OLEDB". Получай набор записей как результат ".Execute", и дай ему возможность пожить своей жизнью после выхода переменных из области видимости, без всяких там "= Неопределено"

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.