Как исправить ошибку «Источник данных не найден и не указан драйвер» при подключении к внешнему источнику данных в 1С?

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

При настройке интеграции 1С:Предприятия с Microsoft SQL Server через механизм Внешние источники данных (ВИД) разработчики часто сталкиваются с ошибкой ODBC: «Источник данных не найден и не указан драйвер, используемый по умолчанию» (код ошибки IM002). Разберем причины возникновения этой проблемы и рассмотрим по шагам, как правильно настроить драйверы, строку подключения и программную инициализацию внешнего источника данных.

Причины возникновения ошибки

Проанализируем ключевые факторы, приводящие к сбою соединения:

  1. Несоответствие имени драйвера в строке подключения. Если в параметре DRIVER={...} указать имя, не зарегистрированное в системе, диспетчер ODBC вернет ошибку. Имена драйверов должны совпадать посимвольно (например, устаревший системный драйвер {SQL Server}, драйвер {SQL Server Native Client 11.0} и автономный {ODBC Driver 11 for SQL Server} — это совершенно разные библиотеки).
  2. Несовпадение разрядности клиента 1С и драйвера ODBC. Если платформа 1С запущена в 32-разрядном режиме (x86), она может использовать исключительно 32-разрядные драйверы ODBC. Если драйвер установлен только для 64-разрядной архитектуры, 32-разрядный клиент 1С его не увидит.
  3. Подмена механизмов подключения в программном коде. Создание COM-объекта ADODB.Connection и его открытие не инициализирует объект метаданных ВнешнийИсточникДанных. Платформа 1С выполняет запрос к внешней таблице через свой собственный механизм. Если параметры подключения для внешнего источника не были предварительно переданы, 1С пытается соединиться с пустыми параметрами, что вызывает ошибку драйвера.

Шаг 1. Проверка установленных драйверов и разрядности

Выясним, какие драйверы зарегистрированы в операционной системе для используемой платформы 1С. Для 32-разрядной версии 1С:Предприятия необходимо запускать 32-разрядный диспетчер ODBC.

Разберем порядок проверки:

  1. Запустим утилиту управления ODBC нужной разрядности: для 32-разрядных драйверов в 64-битной Windows запустим файл C:\Windows\SysWOW64\odbcad32.exe, а для 64-разрядных — C:\Windows\System32\odbcad32.exe.
  2. Перейдем на вкладку Драйверы и проверим точное наименование установленного драйвера SQL Server. Например: SQL Server Native Client 11.0 или ODBC Driver 11 for SQL Server.
  3. Если используется системный или пользовательский DSN, убедимся, что он создан в соответствующей утилите и использует рабочий драйвер.

Шаг 2. Интерактивная настройка подключения в режиме «1С:Предприятие»

Рассмотрим, как задать параметры подключения внешнего источника данных в пользовательском интерфейсе.

В управляемом интерфейсе (Такси):

  1. Откроем меню Функции для технического специалиста (или Все функции).
  2. Перейдем в раздел Стандартные — Управление внешними источниками данных либо раскроем ветку Внешние источники данных и выберем любую таблицу созданного источника.
  3. В появившемся окне настройки параметров подключения укажем строку соединения. Например: DRIVER={SQL Server Native Client 11.0};SERVER=kvazar;UID=sa;PWD=1234;DATABASE=Northwind;
  4. После сохранения параметры записываются во внутренние таблицы информационной базы и сохраняются между сеансами.

Если используется обычный интерфейс (толстый клиент), пункт управления внешними источниками данных отсутствует в меню «Операции». В таком случае параметры достаточно один раз задать через интерфейс управляемых форм либо выполнить настройку программно.

Шаг 3. Корректное программное подключение к внешнему источнику

Посмотрим на пример кода, позволяющего динамически передать параметры подключения и открыть соединение перед выполнением запроса 1С к таблицам внешнего источника данных:


// Получаем общие параметры подключения из метаданных
Параметры = ВнешниеИсточникиДанных.Боерей.ПолучитьОбщиеПараметрыСоединения();
Параметры.СУБД = "MSSQLServer";
Параметры.СтрокаСоединения = "DRIVER={SQL Server Native Client 11.0};SERVER=kvazar;UID=sa;PWD=1234;DATABASE=Northwind;";
Параметры.АутентификацияСтандартная = Истина;

// Устанавливаем параметры соединения для текущего сеанса
ВнешниеИсточникиДанных.Боерей.УстановитьПараметрыСоединенияСеанса(Параметры);

// Явно устанавливаем соединение с внешней СУБД
ВнешниеИсточникиДанных.Боерей.УстановитьСоединение();

// Выполняем запрос к таблице внешнего источника данных
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    dbo_Categories.CategoryID КАК CategoryID,
    |    dbo_Categories.CategoryName КАК CategoryName,
    |    dbo_Categories.Description КАК Description
    |ИЗ
    |    ВнешнийИсточникДанных.Боерей.Таблица.dbo_Categories КАК dbo_Categories";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.CategoryName);
КонецЦикла;

Обратим внимание: использование объекта ADODB.Connection не требуется, если работа ведется через метаданные ВнешнийИсточникДанных. Платформа 1С самостоятельно берет на себя трансляцию запросов и получение данных через системный драйвер ODBC.

Особенности клиент-серверного режима и учебной версии

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

  1. Контекст выполнения на сервере: Если код выполняется на стороне сервера 1С (в процедурах с директивой &НаСервере или регламентных заданиях), драйвер ODBC и системный DSN должны быть установлены непосредственно на сервере 1С:Предприятия. Разрядность драйвера обязана строго совпадать с разрядностью службы rphost (для 64-битного сервера требуется 64-битный драйвер). Серверные службы не видят пользовательские DSN, поэтому настраивать необходимо исключительно Системный DSN (System DSN).
  2. Ограничение учебной версии платформы: При использовании учебной версии 1С:Предприятия установлено платформенное ограничение на выборку из таблиц внешних источников данных — возвращается не более 200 строк. Для обхода этого ограничения в целях тестирования больших объемов данных можно использовать COM-соединение с ADODB напрямую, без задействования объектов метаданных ВИД.
← На главную