Почему не подключается XLSX как внешний источник данных и как это исправить

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с механизмом Внешние источники данных в 1С — это эффективный способ интеграции с внешними системами, однако при попытке подключить обычный файл Excel (.xlsx) разработчики часто сталкиваются с критическими проблемами. Конфигуратор может «намертво» зависнуть, или система выдает невразумительные ошибки о том, что имя в источнике данных не указано. В этой статье мы подробно разберем, почему возникают такие ситуации, и как правильно настроить соединение, чтобы все работало стабильно.

Разбираем причину зависания Конфигуратора: конфликт разрядности

Одной из самых частых причин, по которой интерфейс 1С блокируется на длительное время при попытке настройки внешнего источника, является несоответствие разрядности (32-бит или 64-бит) платформы 1С и установленных в операционной системе драйверов ODBC/OLE DB. Проанализируем, как это происходит.

Важно помнить, что даже если вы работаете на 64-битной Windows, ваш Конфигуратор 1С чаще всего является 32-битным приложением (особенно в версиях до 8.3.20+). Когда вы указываете строку подключения в Конфигураторе, система пытается инициализировать драйвер. Если в строке прописан драйвер, который существует только в 64-битной версии, или если система пытается вызвать диалоговое окно драйвера, которое конфликтует с потоком интерфейса 1С, происходит «зависание».

Рассмотрим ситуацию: в режиме «1С:Предприятие» соединение устанавливается успешно, а в Конфигураторе — нет. Это классический признак того, что серверная часть (которая может быть 64-битной) видит нужные компоненты, а клиентская часть (32-битный Конфигуратор) — нет. Для решения этой проблемы необходимо убедиться, что на компьютере разработчика установлен Microsoft Access Database Engine соответствующей разрядности.

Правила именования таблиц в источнике данных

После того как соединение установлено, возникает следующая сложность — добавление таблиц. При работе с Excel роль «таблиц» выполняют листы книги. Однако просто написать название листа (например, «Лист1») недостаточно. Система 1С будет выдавать ошибку «Не указано имя в источнике данных».

Разберем по шагам, как правильно указывать имя таблицы:

  1. Символ доллара: В драйверах Microsoft Excel имя листа всегда должно заканчиваться символом $. Это внутренний стандарт обращения к листу как к объекту базы данных.
  2. Квадратные скобки: Если в названии листа есть пробелы или другие спецсимволы, всё имя вместе со знаком доллара необходимо заключать в квадратные скобки.
  3. Пример корректного имени: Вместо Лист1 нужно писать [Лист1$].

Проанализируем типичную ошибку: пользователь указывает Лист1$, но без скобок. В некоторых версиях драйверов это может сработать, но 1С часто требует строгого соответствия метаданным, которые возвращает драйвер. Использование [ИмяЛиста$] является максимально надежным вариантом.

Настройка строки подключения: Driver vs Provider

Существует два основных способа подключиться к Excel-файлу. Рассмотрим подробнее каждый из них.

Способ 1. Использование Microsoft Excel Driver (ODBC)

Этот способ часто используется по умолчанию. Строка подключения выглядит следующим образом:


Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=D:\Загрузить.xlsx;

Однако для стабильной работы, особенно с форматом .xlsx, рекомендуется добавлять расширенные свойства Extended Properties. Они сообщают драйверу версию формата и наличие заголовков:


Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=D:\Загрузить.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Параметр HDR=YES указывает, что первая строка листа содержит имена колонок. Если поставить HDR=NO, колонки будут называться F1, F2 и так далее.

Способ 2. Использование Microsoft.ACE.OLEDB (Провайдер)

Специалисты по 1С рекомендуют использовать провайдер ACE OLEDB, так как он работает быстрее и стабильнее с современными файлами Office. Для этого на компьютере должен быть установлен пакет Microsoft Access Database Engine 2010 (или новее).

Пример строки подключения через провайдер:


Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Загрузить.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Проблема пустых строк и типов данных

Выясним еще одну причину, по которой 1С может вести себя некорректно при чтении данных из Excel. Драйвер Excel при подключении сканирует первые несколько строк (обычно 8), чтобы определить тип данных в колонке (число, строка или дата). Если в первых восьми строках данные перемешаны или много пустых ячеек, драйвер может ошибиться с типом, что приведет к ошибкам в 1С при обращении к ВнешнемуИсточникуДанных.

Для решения этой проблемы можно принудительно заставить драйвер сканировать больше строк, изменив настройки в реестре Windows (параметр TypeGuessRows), или убедиться, что данные в Excel-файле однородны с самой первой строки.

Права доступа к файлу

Напоследок разберем ситуацию, когда в Конфигураторе всё настроено, но в режиме «1С:Предприятие» данные не отображаются. Если база работает в клиент-серверном варианте, то подключение к файлу D:\Загрузить.xlsx будет пытаться выполнить сервер 1С (процесс rphost), а не ваш компьютер.

Проанализируем условия успешного доступа:

Соблюдение этих правил и использование корректного синтаксиса в имени таблиц ([Лист1$]) позволит вам избежать зависаний и успешно интегрировать данные из Excel в вашу конфигурацию 1С.

← На главную