При переходе на 64-разрядные клиентские приложения 1С:Предприятие 8.3 системные администраторы часто сталкиваются с аппаратными сбоями. Типичная ситуация: при попытке подключить популярный эквайринговый терминал Ingenico iPP320 в конфигурации «1С:Управление торговлей 11.4» система выдает ошибку при установке драйвера IngenicoDriver1C.dll. Проблема кроется в разрядности операционной системы, платформы 1С и самого внешнего компонента.
В этой статье мы подробно разберем природу данной ошибки, выясним, почему стандартные обертки не всегда помогают, и пошагово реализуем рабочие варианты настройки оборудования.
Прежде чем приступать к настройке, проанализируем, почему возникает конфликт. Операционная система Windows x64 может выполнять как 32-битные, так и 64-битные приложения. Однако внутри одного процесса смешивать код разной разрядности категорически запрещено. Это значит, что 64-битный клиент 1С (процесс 1cv8.exe из папки Program Files) физически не способен загрузить в свое адресное пространство 32-битную динамическую библиотеку (DLL).
Существует два основных технологических стандарта для интеграции оборудования в 1С:
regsvr32. Для таких библиотек (например, ArcCom.dll, используемой в некоторых версиях ПО Arcus 2) можно настроить суррогатный COM+ хост (утилита dllhst3g.exe), который выступит мостом между 64-битной 1С и 32-битным драйвером.IngenicoDriver1C.dll поставляется именно в этом формате. Она загружается платформой напрямую, без регистрации в реестре Windows. Настроить для нее внешнюю COM-обертку невозможно, так как она не является COM-объектом. Единственный способ заставить её работать в x64-клиенте — использовать x64-версию самой библиотеки, которой в старых поставках БПО просто не было.Ниже мы подробно разберем два основных пути решения этой проблемы.
Самый простой, быстрый и надежный способ запустить эквайринг — использовать 32-разрядный клиент 1С на рабочем месте кассира. Многие ошибочно полагают, что раз сервер 1С работает в 64-битной архитектуре, то и клиенты обязаны быть строго 64-битными. Это не так: 32-битный тонкий или толстый клиент прекрасно подключается и работает с 64-битным сервером баз данных. Единственное жесткое условие — номера релизов платформы на клиенте и сервере должны полностью совпадать (например, 8.3.18.1300 x86 на клиенте и 8.3.18.1300 x64 на сервере).
Однако при установке обеих версий платформ на компьютер под управлением Windows 10 x64, стандартный загрузчик 1cestart.exe по умолчанию будет перенаправлять пользователя на запуск 64-битной версии. Рассмотрим, как принудительно заставить систему запускать именно 32-битный клиент для конкретной базы.
Выполним следующие шаги:
После выполнения этих действий при старте выбранной базы будет гарантированно открываться 32-разрядный клиент 1С, который без проблем подгрузит стандартный драйвер IngenicoDriver1C.dll.
Если специфика работы пользователя требует наличия именно 64-битного клиента (например, на этом же компьютере строятся тяжелые отчеты, требующие выделения более 2 ГБ оперативной памяти), необходимо использовать драйвер эквайринга, поддерживающий архитектуру x64.
Рассмотрим, как обновить компоненту:
Успешная интеграция эквайринга зависит не только от платформы 1С, но и от подготовки операционной системы Windows. Чтобы интеграционная компонента 1С могла передавать команды на терминал, на стороне ОС должны быть выполнены следующие настройки:
COM3) определился терминал.C:\Arcus2, настроены конфигурационные файлы (в частности, файлы cashreg.ini и cheque.txt), а терминал успешно выполняет операцию сверки итогов из автономного меню.Соблюдение этих рекомендаций позволит быстро и безболезненно подружить терминал Ingenico iPP320 с конфигурациями 1С любой разрядности.