При обновлении технологической платформы 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-битные компоненты.
Если ваша конфигурация является «древней» (как УТ 10.3 в примере), а сервер терминалов обслуживает и другие, более современные базы (БП 3.0, ЗУП 3.1), нет необходимости переводить абсолютно все базы на 64-битную платформу. Мы можем запустить конкретную базу под управлением 32-битного клиента, сохранив работоспособность всех внешних компонентов.
Рассмотрим шаги по настройке:
В этом случае платформа автоматически подберет установленный 32-битный релиз, и внешняя обработка снова «увидит» свои драйверы.
Если вы твердо решили использовать 64-битную платформу, нам необходимо обеспечить наличие соответствующих драйверов. Проанализируем ситуацию: в Windows есть два разных инструмента управления ODBC.
Выясним, где они находятся:
C:\Windows\System32\odbcad32.exeC:\Windows\SysWOW64\odbcad32.exeОбратите внимание: названия файлов одинаковые, но пути разные (имена папок в Windows могут вводить в заблуждение). Чтобы обработка заработала на x64, вам нужно запустить администратор из папки System32 и создать там системный DSN (Data Source Name) с тем же именем, которое используется в коде вашей обработки.
Многие обработки для ЕГАИС используют компоненты Microsoft для чтения данных. Если в коде упоминается провайдер Microsoft.Jet.OLEDB.4.0, знайте — это исключительно 32-битный драйвер, и для x64 он не существует. Вам потребуется его современный аналог — Microsoft Access Database Engine.
Разберем процесс установки:
/passive.Пример команды для запуска:
C:\Downloads\AccessDatabaseEngine_X64.exe /passive
После этого в системе появится провайдер Microsoft.ACE.OLEDB.12.0 (или 15.0/16.0), который поддерживает 64-битную архитектуру.
Иногда простой установки драйверов недостаточно, так как в самой обработке жестко прописана «строка соединения». Проанализируем типичный код подключения. Если мы видим использование старого провайдера, его необходимо заменить на новый, поддерживающий 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.