Переход с 32-битной (x86) на 64-битную (x64) версию платформы 1С:Предприятие часто сопровождается сложностями при подключении торгового оборудования. Основная причина заключается в том, что 64-битный процесс 1С не может напрямую взаимодействовать с 32-битными компонентами и драйверами (библиотеками DLL), которые поставляются банками или производителями оборудования. Рассмотрим подробно, почему возникает эта проблема на примере терминалов Ingenico с ПО Arcus2 и как обеспечить стабильную работу всей кассовой периферии.
Проанализируем ситуацию: когда вы запускаете 1С в 64-битном режиме, программа ожидает, что все внешние компоненты (драйверы оборудования) также будут иметь разрядность x64. В случае с банковским терминалом (банк «Русский Стандарт», софт Arcus2), библиотека ArcCom.dll зачастую является 32-битной. При попытке регистрации через regsvr32 или при попытке 1С инициализировать драйвер, система выдает ошибку, так как 64-битное приложение «не видит» 32-битную библиотеку в своем адресном пространстве.
Важно различать два типа драйверов, с которыми мы работаем:
IngenicoUSBDrivers. Он создает в системе виртуальный COM-порт. Этот драйвер может быть 64-битным и прекрасно работать в диспетчере устройств Windows, но это лишь половина дела.ArcCom.dll или компонента интеграции 1С не поддерживает x64, терминал в 1С работать не будет.Разберем самый простой и надежный способ, который часто упускают из виду. Разрядность сервера 1С:Предприятие (где крутится база SQL) и разрядность клиентского приложения (которое запущено у кассира) могут не совпадать. Вы можете успешно использовать 64-битный сервер 1С для высокой производительности базы данных, но на рабочих местах кассиров установить 32-битную версию платформы 1С.
Проанализируем шаги для реализации этого подхода:
8.3.17.1496), но выберем дистрибутив Windows (x86).Внимание: При использовании этого метода версия платформы на сервере и клиенте должна совпадать до последней цифры (релиза), иначе подключение к базе будет невозможно.
Если заказчик настаивает на использовании именно 64-битного клиента 1С, а драйвер эквайринга существует только в 32-битном исполнении, нам придется прибегнуть к технологии Windows COM+. Это позволит запускать 32-битную ArcCom.dll в отдельном системном процессе dllhost.exe, с которым 64-битная 1С сможет общаться.
Рассмотрим по шагам настройку службы компонентов:
1C_Arcus_Proxy.ArcCom.dll.ArcCom.Terminal через системный прокси-процесс.Часто возникает ситуация (как у автора темы), когда терминал заработал на 32-битном клиенте, но «отвалился» фискальный регистратор, требующий x64. Выясним причину: современные драйверы (например, АТОЛ 10) при установке регистрируют ту версию компоненты, которая соответствует разрядности ОС или выбранным параметрам установки.
Для корректной работы ФР в связке с 32-битным клиентом 1С выполним следующие действия:
.zip архив или .dll из папки C:\Program Files (x86)\Atol\Drivers10\....Посмотрим на современные возможности 1С. Многие производители перешли на технологию Native API, которая является кроссплатформенной и менее зависимой от разрядности. Проанализируем настройки в 1С:
Важно помнить, что в 64-битных ОС Windows существует две версии утилиты regsvr32.exe. Разберем, какую использовать:
C:\Windows\System32\regsvr32.exeC:\Windows\SysWOW64\regsvr32.exeЕсли вы регистрируете ArcCom.dll вручную, используйте версию из папки SysWOW64, иначе регистрация может пройти успешно, но компонента не будет доступна для работы.
Рассмотрим пример правильной командной строки для регистрации:
C:\Windows\SysWOW64\regsvr32.exe "C:\Arcus2\DLL\ArcCom.dll"
Подведем итог: Самым стабильным решением для торговых точек остается использование 32-битного клиента 1С. Если же требуется работа исключительно в x64, необходимо либо обновлять драйверы оборудования до нативных 64-битных версий, либо настраивать прослойку COM+ для старых библиотек. Всегда проверяйте соответствие разрядности установленного драйвера ФР разрядности запущенного клиентского приложения 1С.