Часто при освоении работы с внешними источниками данных в 1С (особенно когда планируется полноценно управлять базами на SQL, не выходя из 1С (поможет инструмент управления базами на SQL из 1С)) разработчики сталкиваются с парадоксальной ситуацией: в Конфигураторе подключение к внешней базе SQL проходит успешно, список таблиц виден, но при попытке выполнить запрос из режима "Предприятие" система выдает ошибку "Ошибка ODBC. SQLSTATE: IM002... Источник данных не найден и не указан драйвер, используемый по умолчанию". Давайте вместе разберемся, почему так происходит и как это исправить.
Проанализируем ситуацию. Основная причина этой ошибки кроется в фундаментальном различии сред, в которых выполняются ваши действия. Когда вы работаете в Конфигураторе, все операции происходят на вашей локальной машине. А когда запрос выполняется в клиент-серверной базе, он уходит на сервер 1С. Именно этот переход в серверный контекст и является ключом к пониманию проблемы.
Рассмотрим два сценария, чтобы понять разницу в контексте выполнения:
1. Работа в Конфигураторе. Конфигуратор — это, по сути, клиентское приложение. Когда вы настраиваете внешний источник данных, получаете список таблиц и полей, все эти действия выполняются на вашем рабочем компьютере. Система использует ODBC-драйверы, установленные локально, и DSN (Data Source Name), настроенные под вашей учетной записью.
2. Выполнение запроса в режиме "Предприятие". Когда ваша информационная база работает в клиент-серверном варианте, фактическое исполнение запросов к внешним источникам данных происходит не на клиентском компьютере, а на сервере 1С:Предприятия. За это отвечает серверный процесс rphost.exe. В некоторых случаях для стабильности всей системы может потребоваться автоматический перезапуск рабочих процессов rphost, но в контексте нашей ошибки важно, что именно этот процесс пытается установить соединение с внешней SQL-базой. Ошибка "Источник данных не найден" говорит нам о том, что сервер 1С на своей машине не смог найти ни подходящего ODBC-драйвера, ни настроенного источника данных (DSN), который вы использовали на своем компьютере.
Таким образом, наша задача — настроить окружение на сервере 1С так, чтобы он "увидел" внешнюю базу данных.
Чтобы обеспечить стабильное подключение, необходимо последовательно выполнить настройку на сервере 1С. Разберем этот процесс по шагам.
Установка ODBC-драйвера на сервере 1С
Первый и самый главный шаг — установить необходимый ODBC-драйвер для Microsoft SQL Server непосредственно на том сервере, где работает служба "Агент сервера 1С:Предприятия". Без этого драйвера сервер физически не знает, как "разговаривать" с внешней SQL-базой. Скачайте соответствующий драйвер с официального сайта Microsoft и установите его. Кроме того, на стороне самого SQL-сервера должна быть выполнена корректная настройка регламентных операций MS SQL SERVER (поможет инструмент диагностики и настройки MS SQL Server), чтобы внешние запросы обрабатывались эффективно.
Правильный выбор разрядности драйвера (x32 vs x64)
Это один из самых частых камней преткновения. Разрядность устанавливаемого ODBC-драйвера должна строго соответствовать разрядности процесса сервера 1С (rphost.exe).
Установка драйвера не той разрядности приведет к тому, что система его просто "не увидит", и вы продолжите получать ту же ошибку.
Настройка Системного DSN (System DSN)
После установки драйвера на сервере 1С настоятельно рекомендуется создать Системный DSN (System DSN), а не Пользовательский (User DSN). Почему это важно? Служба сервера 1С обычно запускается от имени специального системного пользователя (например, USR1CV8), у которого нет доступа к пользовательским настройкам, созданным под вашей учетной записью администратора. Системный DSN, в свою очередь, доступен для всех служб и пользователей на сервере.
Для настройки используйте соответствующую утилиту "Администратор источников данных ODBC":
C:\Windows\System32\odbcad32.exeC:\Windows\SysWOW64\odbcad32.exeВ утилите перейдите на вкладку "Системный DSN", нажмите "Добавить", выберите установленный драйвер SQL Server и укажите все параметры подключения: имя DSN (например, MyExternalDB), адрес сервера, имя базы данных и параметры аутентификации. Обязательно воспользуйтесь кнопкой "Проверить соединение" (Test Connection), чтобы убедиться, что с сервера 1С есть сетевой доступ к SQL-серверу и учетные данные верны.
Настройка подключения в режиме "Предприятие 1С"
Как верно было подсказано на форуме, определения источника в Конфигураторе недостаточно. Это лишь описание метаданных. Теперь нужно указать, как к нему подключаться в рабочем режиме. Это критически важно, если вы используете механизмы интеграции, такие как подсистема выгрузки данных во внешнюю базу SQL — для этой задачи есть подсистема автоматизированной выгрузки данных в SQL.
Запустите 1С в режиме "Предприятие" с правами администратора и перейдите в меню Функции для технического специалиста → Управление внешними источниками данных.
В открывшемся окне вы увидите список внешних источников, определенных в Конфигураторе. Выберите нужный и задайте для него параметры подключения. У вас есть два варианта:
MyExternalDB).Также укажите логин и пароль, если для доступа к внешней базе требуется аутентификация SQL Server. Эти настройки сохраняются в информационной базе и будут использоваться сервером 1С при каждом выполнении запроса.
Если вы решили не использовать DSN, а прописывать строку подключения напрямую, важно точно указывать имя драйвера. Оно должно соответствовать тому, как драйвер зарегистрирован в системе. Например, для современных версий SQL Server это может быть не просто SQL Server, а ODBC Driver 17 for SQL Server.
Пример полной строки подключения может выглядеть так:
DRIVER={ODBC Driver 17 for SQL Server};SERVER=имя_вашего_sql_сервера;DATABASE=имя_базы_данных;UID=логин;PWD=пароль;
После выполнения всех этих шагов попробуйте снова выполнить ваш запрос из консоли запросов (удобно через универсальная консоль запросов для 1С) или из кода в режиме "Предприятие". Ошибка должна исчезнуть, так как теперь сервер 1С обладает всей необходимой информацией для успешного подключения к внешнему источнику данных. Стоит отметить, что при работе в гетерогенных средах (например, при обслуживании баз данных 1C на Postgresql под Astra Linux) принципы настройки могут отличаться, но общая логика реализации IT инфраструктуры всегда требует внимания к контексту выполнения серверных процессов.
Подведем итог: проблема не в самом запросе, а в окружении, где он выполняется. Решение заключается в комплексной подготовке сервера 1С: установке ODBC-драйвера правильной разрядности, создании системного DSN для доступа от имени службы и, наконец, указании этих параметров подключения в режиме "Предприятие".