Как исправить ошибку поиска источника данных ODBC в обработке ЕГАИС после обновления платформы 1С на x64

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При обновлении технологической платформы 1С:Предприятие с 32-битной (x86) на 64-битную (x64) пользователи часто сталкиваются с тем, что привычные внешние обработки, особенно связанные с ЕГАИС, перестают работать. Типичная ошибка выглядит так: "Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию". Для предотвращения таких технических сбоев можно перевести работу на автоматический обмен между 1С и ЕГАИС с прямой поддержкой актуальных версий платформы и сверкой контрагентов.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем техническую составляющую конфликта разрядностей и предложим несколько вариантов решения: от самого простого «отката» до полноценной настройки системы под 64-битную среду.

Причина возникновения ошибки: конфликт разрядностей

Основная причина кроется в архитектуре операционной системы Windows. Разберем ситуацию: ваша старая платформа 1С (например, 8.3.13.1513) была 32-битной. Она успешно взаимодействовала с 32-битными драйверами ODBC и OLE DB, которые были установлены в системе. Когда вы установили новую платформу 8.3.16.1063 x64, исполняемый процесс 1С стал 64-битным.

Важно понимать: 64-битное приложение принципиально не может «видеть» или использовать 32-битные драйверы, и наоборот. Когда внешняя обработка пытается подключиться к источнику данных (например, к базе Access, файлу Excel или серверу через ODBC), она просит платформу вызвать драйвер. 64-битная платформа ищет этот драйвер в 64-битном разделе системного реестра, но находит там пустоту, так как ранее в системе настраивались только 32-битные компоненты.

Способ 1: Использование 32-битного клиента для конкретной базы

Если ваша конфигурация является «древней» (как УТ 10.3 в примере), а сервер терминалов обслуживает и другие, более современные базы (БП 3.0, ЗУП 3.1), нет необходимости переводить абсолютно все базы на 64-битную платформу. Мы можем запустить конкретную базу под управлением 32-битного клиента, сохранив работоспособность всех внешних компонентов.

Рассмотрим шаги по настройке:

  1. Убедитесь, что на сервере установлены обе версии платформы (и x32, и x64).
  2. Запустите окно выбора информационных баз 1С.
  3. Выберите нужную базу (УТ 10.3) и нажмите кнопку "Изменить".
  4. Перейдите на последнюю закладку настроек.
  5. В поле "Разрядность" вместо значения "Авто" или "64 (x86_64)" явно укажите "32 (x86)".
  6. Нажмите "Готово" и запустите базу.

В этом случае платформа автоматически подберет установленный 32-битный релиз, и внешняя обработка снова «увидит» свои драйверы.

Способ 2: Настройка 64-битных драйверов ODBC

Если вы твердо решили использовать 64-битную платформу, нам необходимо обеспечить наличие соответствующих драйверов. Проанализируем ситуацию: в Windows есть два разных инструмента управления ODBC.

Выясним, где они находятся:

Обратите внимание: названия файлов одинаковые, но пути разные (имена папок в Windows могут вводить в заблуждение). Чтобы обработка заработала на x64, вам нужно запустить администратор из папки System32 и создать там системный DSN (Data Source Name) с тем же именем, которое используется в коде вашей обработки.

Способ 3: Установка Microsoft Access Database Engine x64

Многие обработки для ЕГАИС используют компоненты Microsoft для чтения данных. Если в коде упоминается провайдер Microsoft.Jet.OLEDB.4.0, знайте — это исключительно 32-битный драйвер, и для x64 он не существует. Вам потребуется его современный аналог — Microsoft Access Database Engine.

Разберем процесс установки:

  1. Скачайте с сайта Microsoft пакет "Microsoft Access Database Engine 2010" (или 2016) версии x64.
  2. Если на сервере установлен 32-битный Microsoft Office, обычный установщик выдаст ошибку.
  3. В этом случае запустите установку через командную строку (cmd) с параметром /passive.

Пример команды для запуска:

C:\Downloads\AccessDatabaseEngine_X64.exe /passive

После этого в системе появится провайдер Microsoft.ACE.OLEDB.12.0 (или 15.0/16.0), который поддерживает 64-битную архитектуру.

Способ 4: Корректировка кода внешней обработки

Иногда простой установки драйверов недостаточно, так как в самой обработке жестко прописана «строка соединения». Проанализируем типичный код подключения. Если мы видим использование старого провайдера, его необходимо заменить на новый, поддерживающий x64.

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


// Старый вариант (только для x32)
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ПутьКФайлу + ";Extended Properties='Excel 8.0;HDR=YES;'";

// Новый вариант (универсальный для x64 при наличии драйвера ACE)
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ПутьКФайлу + ";Extended Properties='Excel 12.0 Xml;HDR=YES;'";

Замена Microsoft.Jet.OLEDB.4.0 на Microsoft.ACE.OLEDB.12.0 позволяет платформе x64 успешно инициализировать COM-объект и открыть файл.

Проблемы конкретных релизов платформы

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

Резюме

Мы выяснили, что корень проблемы — в невидимости 32-битных системных компонентов для 64-битного процесса 1С. Для исправления ситуации вы можете либо вернуть базу на работу с 32-битным клиентом через настройки запуска, либо доустановить в систему 64-битные драйверы ODBC и обновить строку соединения в коде обработки. Выбор метода зависит от того, насколько критично для вас использование именно x64 клиента для старой конфигурации Управление торговлей 10.3.

← На главную