При загрузке данных из Excel в 1С 8 более-менее штатными средствами чтение данных происходит медленно. Но когда надо загрузить много данных и быстро, то можно воспользоваться прямым SQL запросом к Excel. Он выполняется в разы быстрее.
Обработка настроена на загрузку данных из MS Excel 97 и 2003 (и выше) версий. Загружаются данные в таблицу значений, потом их можно дальше обрабатывать.
Основной алгоритм:
СтрПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Файл + ";Extended Properties=Excel 8.0;"; //для Excel 97
СтрПодключения2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Файл + ";Extended Properties=Excel 8.0;"; //для Excel 2003 (или наоборот?)
ЕстьОшибкаПодключения = Ложь;
Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionString = СтрПодключения;
Попытка
Connection.Open();
Исключение
ЕстьОшибкаПодключения = Истина;
КонецПопытки;
Если ЕстьОшибкаПодключения Тогда
Connection.ConnectionString = СтрПодключения2;
Попытка
Connection.Open();
Исключение
Сообщить ("Проблемы с подключением к SQLserver" );
Возврат;
КонецПопытки;
КонецЕсли;
ТекстЗапроса = "SELECT * FROM [A"+ПерваяИнформационнаяСтрокаЭкселя+":BB]";
//тут можно указать и название листа типа "SELECT * FROM [Sheet1!A:BB]"
//можно указать условие SELECT * FROM [A1:BB] where [ИНН]=""543400114477""";
//Но надо помнить, при выборке Excel называет столбцы по значению в первой строке диапазона.
//Если значения нет - то название столбца будет F1, F2 и т.д.
Запрос = Новый COMОбъект("ADODB.Recordset");
Запрос.Activeconnection = Connection;
Попытка
Запрос.Open(ТекстЗапроса);
Исключение
Сообщить ("Проблемы с выполнением запроса к SQL");
Возврат;
КонецПопытки;
более подробно - в обработке.