Переход на 64-битную версию платформы 1С часто сопровождается сложностями при работе с торговым оборудованием. Одной из самых распространенных проблем является невозможность установить или подключить драйвер эквайрингового терминала Сбербанка. Рассмотрим подробно, почему это происходит и какими способами можно восстановить работоспособность оборудования.
Основная причина кроется в несовместимости разрядностей. Процесс 64-битного клиента 1С физически не может загрузить 32-битную библиотеку (DLL). Большинство драйверов Сбербанка (ПО UPOS) исторически поставлялись в 32-битном варианте. Когда вы нажимаете кнопку Установить драйвер в интерфейсе 1С, система пытается загрузить внешнюю компоненту, соответствующую разрядности запущенного клиентского приложения. Если в макете драйвера отсутствует 64-битная версия библиотеки, или если установленное на компьютере банковское ПО (библиотеки sbrf.dll, gate.dll) является 32-битным, установка завершится ошибкой.
Важно понимать, что регистрация библиотек через regsvr32 в папку SysWOW64 помогает только 32-битным приложениям видеть эти библиотеки. Для 64-битной платформы 1С этот шаг зачастую оказывается бесполезным, так как ей требуются регистрации в 64-битной ветке реестра и соответствующие бинарные файлы.
Проанализируем архитектуру рабочего места кассира. Тонкий клиент 1С на кассе редко потребляет более 2 ГБ оперативной памяти. Преимущество 64-битной платформы в нативном использовании большого объема памяти на кассах обычно не требуется. Поэтому самым стабильным решением будет установка 32-битного клиента 1С параллельно с 64-битным сервером или для конкретных рабочих мест.
Этот метод позволяет сохранить 64-битную версию сервера для тяжелых вычислений, при этом обеспечивая полную совместимость с торговым оборудованием, которое в 90% случаев работает на 32-битных драйверах.
Если использование 64-битного клиента является принципиальным вопросом, разберем по шагам, как подружить его с компонентами Сбербанка. Для этого нам понадобится дистрибутив Сбербанка под названием WinCLI, который содержит необходимые компоненты для работы в современных средах.
Выполним следующие действия:
C:\sc552.sb_pilot.exe, gate.dll и файлы параметров pinpad.ini.C:\sc552 для группы пользователей "Все". Это необходимо, так как при транзакции драйвер создает временные файлы (файлы ответов e, p), и отсутствие прав 1С интерпретирует как ошибку драйвера.Выясним причину, по которой 1С не видит 32-битную DLL. Если банк предоставил только 32-битную библиотеку sbrf.dll, мы можем запустить её в изолированном системном процессе Windows, который будет выступать посредником между 64-битной 1С и 32-битной библиотекой.
Рассмотрим алгоритм настройки:
Sber_Bridge.Теперь 64-битная 1С сможет обращаться к объекту этой библиотеки через системный процесс dllhost.exe, который обеспечит маршалинг данных между разрядностями.
В современных конфигурациях "1С:Розница" вызов оборудования происходит через стандартную библиотеку подключаемого оборудования (БПО). Рассмотрим фрагмент кода, который отвечает за инициализацию компоненты. Если вы ведете разработку, обратите внимание на метод ПодключитьВнешнююКомпоненту.
// Пример инициализации компоненты в управляемом приложении
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверСбербанкЭквайринг", "Sber", ТипВнешнейКомпоненты.Native);
Если Не Результат Тогда
Сообщить("Не удалось загрузить компоненту. Проверьте разрядность платформы!");
КонецЕсли;
Для 64-битной платформы важно, чтобы в ОбщийМакет.ДрайверСбербанкЭквайринг (который является ZIP-архивом) внутри находился файл manifest.xml, где прописаны пути к библиотекам для обеих архитектур (i386 и x86_64). Если в макете только одна папка с библиотекой, 1С 64-бит не найдет нужный бинарный файл.
Проанализируем ситуацию, когда все файлы на месте, но драйвер всё равно не устанавливается. Библиотеки Сбербанка (особенно gate.dll) зависят от рантайм-библиотек Microsoft Visual C++. Для корректной работы 64-битного клиента 1С с оборудованием на компьютере должны быть установлены пакеты Microsoft Visual C++ Redistributable (2015-2019) обеих разрядностей — и x86, и x64. Часто отсутствие именно x64-версии рантайма блокирует загрузку 64-битной компоненты драйвера.
Рассмотренные способы решают проблему в зависимости от ваших возможностей доступа к системе. Если вам нужно быстрое и надежное решение — используйте 32-битный тонкий клиент. Если инфраструктура требует строгого использования x64 — ориентируйтесь на пакет WinCLI и настройку прав доступа к папке обмена. Не забывайте, что зона ответственности банка заканчивается на работоспособности терминала и его утилит (например, loadparm.exe), а сопряжение с 1С — это задача системного администратора или программиста 1С.