Как настроить работу эквайринга и фискального регистратора при переходе на 64-битную платформу 1С:Предприятие

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

Переход с 32-битной (x86) на 64-битную (x64) версию платформы 1С:Предприятие часто сопровождается сложностями при подключении торгового оборудования. Основная причина заключается в том, что 64-битный процесс 1С не может напрямую взаимодействовать с 32-битными компонентами и драйверами (библиотеками DLL), которые поставляются банками или производителями оборудования. Рассмотрим подробно, почему возникает эта проблема на примере терминалов Ingenico с ПО Arcus2 и как обеспечить стабильную работу всей кассовой периферии.

Разбор причины конфликта разрядностей

Проанализируем ситуацию: когда вы запускаете 1С в 64-битном режиме, программа ожидает, что все внешние компоненты (драйверы оборудования) также будут иметь разрядность x64. В случае с банковским терминалом (банк «Русский Стандарт», софт Arcus2), библиотека ArcCom.dll зачастую является 32-битной. При попытке регистрации через regsvr32 или при попытке 1С инициализировать драйвер, система выдает ошибку, так как 64-битное приложение «не видит» 32-битную библиотеку в своем адресном пространстве.

Важно различать два типа драйверов, с которыми мы работаем:

  1. Низкоуровневый драйвер устройства: Например, IngenicoUSBDrivers. Он создает в системе виртуальный COM-порт. Этот драйвер может быть 64-битным и прекрасно работать в диспетчере устройств Windows, но это лишь половина дела.
  2. Программный интерфейс (библиотека COM/Native): Это посредник между 1С и низкоуровневым драйвером. Если библиотека ArcCom.dll или компонента интеграции 1С не поддерживает x64, терминал в 1С работать не будет.

Решение 1: Использование 32-битного клиента при 64-битном сервере

Разберем самый простой и надежный способ, который часто упускают из виду. Разрядность сервера 1С:Предприятие (где крутится база SQL) и разрядность клиентского приложения (которое запущено у кассира) могут не совпадать. Вы можете успешно использовать 64-битный сервер 1С для высокой производительности базы данных, но на рабочих местах кассиров установить 32-битную версию платформы 1С.

Проанализируем шаги для реализации этого подхода:

  1. Убедимся, что на сервере установлена и работает 64-битная платформа.
  2. На компьютере кассира установим ту же самую версию платформы (например, 8.3.17.1496), но выберем дистрибутив Windows (x86).
  3. Запустим 1С. В этом случае клиентское приложение будет 32-битным и сможет корректно подгрузить все «старые» драйверы эквайринга и фискальных регистраторов.

Внимание: При использовании этого метода версия платформы на сервере и клиенте должна совпадать до последней цифры (релиза), иначе подключение к базе будет невозможно.

Решение 2: Настройка суррогатного процесса через COM+ (для работы в x64 1С)

Если заказчик настаивает на использовании именно 64-битного клиента 1С, а драйвер эквайринга существует только в 32-битном исполнении, нам придется прибегнуть к технологии Windows COM+. Это позволит запускать 32-битную ArcCom.dll в отдельном системном процессе dllhost.exe, с которым 64-битная 1С сможет общаться.

Рассмотрим по шагам настройку службы компонентов:

  1. Откроем «Панель управления» — «Администрирование» — «Службы компонентов».
  2. Перейдем в ветку «Компьютеры» — «Мой компьютер» — «Приложения COM+».
  3. Создадим новое приложение (пустое приложение), назовем его, например, 1C_Arcus_Proxy.
  4. В свойствах созданного приложения на вкладке «Активация» выберем пункт «Серверное приложение».
  5. В ветке нашего приложения перейдем в папку «Компоненты» и добавим новую компоненту, выбрав файл ArcCom.dll.
  6. После этого 64-битная 1С сможет обращаться к объекту ArcCom.Terminal через системный прокси-процесс.

Решение 3: Устранение конфликта с фискальным регистратором (ФР)

Часто возникает ситуация (как у автора темы), когда терминал заработал на 32-битном клиенте, но «отвалился» фискальный регистратор, требующий x64. Выясним причину: современные драйверы (например, АТОЛ 10) при установке регистрируют ту версию компоненты, которая соответствует разрядности ОС или выбранным параметрам установки.

Для корректной работы ФР в связке с 32-битным клиентом 1С выполним следующие действия:

  1. Скачаем дистрибутив драйвера ККТ (например, АТОЛ 10.x).
  2. При установке убедимся, что установлены компоненты для x86 архитектуры.
  3. В самой 1С в справочнике «Драйверы оборудования» переустановим драйвер, выбрав соответствующий .zip архив или .dll из папки C:\Program Files (x86)\Atol\Drivers10\....

Использование Native API

Посмотрим на современные возможности 1С. Многие производители перешли на технологию Native API, которая является кроссплатформенной и менее зависимой от разрядности. Проанализируем настройки в 1С:

  1. Зайдем в раздел «Администрирование» — «Подключаемое оборудование».
  2. Откроем «Драйверы оборудования».
  3. Попробуем нажать кнопку «Добавить новый драйвер из файла» и выбрать современную компоненту, поставляемую банком, которая имеет пометку «Native». Такие компоненты часто содержат внутри себя библиотеки под обе архитектуры (x86 и x64) и устанавливаются автоматически в нужной версии.

Технические нюансы регистрации библиотек

Важно помнить, что в 64-битных ОС Windows существует две версии утилиты regsvr32.exe. Разберем, какую использовать:

Если вы регистрируете ArcCom.dll вручную, используйте версию из папки SysWOW64, иначе регистрация может пройти успешно, но компонента не будет доступна для работы.

Рассмотрим пример правильной командной строки для регистрации:

C:\Windows\SysWOW64\regsvr32.exe "C:\Arcus2\DLL\ArcCom.dll"

Подведем итог: Самым стабильным решением для торговых точек остается использование 32-битного клиента 1С. Если же требуется работа исключительно в x64, необходимо либо обновлять драйверы оборудования до нативных 64-битных версий, либо настраивать прослойку COM+ для старых библиотек. Всегда проверяйте соответствие разрядности установленного драйвера ФР разрядности запущенного клиентского приложения 1С.

← На главную