При попытке организовать обмен данными между 1С и внешними файлами Microsoft Excel разработчики часто сталкиваются с критической ошибкой: ADODB.Connection: Не удается найти указанный поставщик. Эта ошибка указывает на то, что система не может найти или корректно инициализировать OLEDB-провайдер, ответственный за чтение файлов формата .xls или .xlsx. Рассмотрим, как проанализировать эту ситуацию и устранить причину неисправности.
Ключевой причиной возникновения данной ошибки является конфликт разрядности (битности). Работа с ADODB.CONNECTION требует наличия установленных в системе драйверов Microsoft.Jet.OLEDB.4.0 или Microsoft.ACE.OLEDB.12.0. Самое важное правило: разрядность установленного драйвера должна строго соответствовать разрядности платформы 1С, в рамках которой выполняется код.
Если вы используете 32-битную версию платформы 1С, вам необходимо установить 32-битный Microsoft Access Database Engine. Если используется 64-битная версия 1С, драйвер также должен быть 64-битным. В серверных ОС, таких как Windows Server 2008/2012/2019, этот конфликт встречается особенно часто из-за установленного в системе пакета Microsoft Office, который может иметь отличную от 1С разрядность.
Для исправления ситуации необходимо инсталлировать Microsoft Access Database Engine Redistributable соответствующей версии. Рекомендуется использовать версию 2010 года, так как она наиболее стабильна в связке с серверами 1С.
1cv8.exe).Access Database Engine, соответствующий этой разрядности./passive. Это позволит обойти стандартные проверки установщика.Если вы хотите избежать установки тяжелых дополнительных пакетов и сделать код более универсальным, попробуйте изменить строку подключения. Использование стандартного ODBC драйвера, который встроен в Windows, позволяет игнорировать версию установленного пакета Microsoft Office.
Разберем пример изменения кода в вашей обработке:
// Вместо старой строки подключения используем универсальный ODBC драйвер
СтрокаПодключения = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + СокрЛП(ФайлНаправлений) + ";";
Акцесс = СоздатьОбъект("ADODB.CONNECTION");
Акцесс.Open(СтрокаПодключения);
Этот подход позволяет избавиться от привязки к конкретному провайдеру ACE.OLEDB, который часто является источником проблем при обновлении офисного пакета.
Если вы не уверены, какой драйвер доступен в вашей системе, воспользуйтесь методом UDL-файла. Этот инструмент поможет наглядно увидеть список установленных поставщиков.
test.udl.Microsoft.Jet.OLEDB или Microsoft.ACE.OLEDB, значит, драйверы не установлены корректно, и проблема заключается именно в их отсутствии, а не в коде 1С.При работе с файлами Excel из 1С через ADODB мы рекомендуем придерживаться следующих правил:
ODBC-драйвер, так как он менее требователен к окружению и наличию конкретных версий MS Office.Excel.Application как COM-объекта или разбора файла с помощью технологий OpenXML, что позволит полностью исключить зависимость от драйверов доступа к данным на сервере.Надеемся, эти рекомендации помогут вам быстро наладить обмен данными и забыть об ошибках подключения к внешним файлам.