При организации работы розничных точек или ресторанов часто используется терминальный доступ (RDP). База данных 1С «Трактиръ» разворачивается на мощном сервере, а кассовые рабочие места (POS-системы) подключаются к нему в режиме удаленного рабочего стола. При такой схеме нередко возникает классическая проблема: локальные утилиты Сбербанка успешно выполняют сверку итогов через проброшенные COM-порты, но сама система 1С упорно отказывается видеть подключенный эквайринговый терминал, не передает сумму оплаты и не инициирует транзакцию.
В этой статье мы подробно разберем, почему возникает данная проблема при работе в терминальной сессии на операционной системе Windows Server 2008, проанализируем возможные ошибки конфигурации и настроек, а также рассмотрим пошаговые инструкции по их устранению.
Если при запуске сверки итогов непосредственно из папки с ПО Сбербанка (например, через sb_pilot.exe или LoadParm.exe) связь с терминалом устанавливается, это доказывает корректность проброса COM-порта через RDP. Проблема того, почему 1С не реагирует на попытку безналичного расчета, кроется на стыке регистрации библиотек, прав доступа операционной системы и внутренних механизмов взаимодействия 1С с драйвером эквайринга.
Давайте пошагово разберем все способы решения этой проблемы — от простой корректировки конфигурационных файлов до кардинального изменения архитектуры подключения оборудования.
По умолчанию компоненты Сбербанка могут пытаться взаимодействовать с пин-падом, как с USB-устройством прямого подключения. В терминальной среде, где порт проброшен виртуально, это вызывает конфликты. Чтобы принудительно заставить драйвер работать через строго определенный COM-порт, необходимо внести изменения в конфигурационный файл.
Выполним следующие действия по шагам:
C:\Sberbank или C:\sc552).pinpad.ini и откроем его с помощью любого текстового редактора (например, Блокнота) от имени Администратора.
EnableUSB=0
Эта директива сообщает компоненте, что устройство не должно опрашиваться как прямое USB-подключение, переводя обмен данными в классический режим эмуляции COM-порта.pinpad.ini:
ComPort=9
PrinterEnd=01
Speed=115200
ShowScreens=1
NewProtocol=1
EnableUSB=0
Windows Server 2008 в большинстве случаев является 64-разрядной операционной системой (x64). При этом платформа 1С:Предприятие (особенно старых версий или в паре с конфигурацией «Трактиръ») практически всегда используется в 32-разрядном варианте (x86). Стандартный запуск регистрации библиотек через команду regsvr32 регистрирует компоненты в 64-битной ветке реестра, из-за чего 32-битное приложение 1С просто «не видит» класс драйвера.
Чтобы решить эту проблему, выполним правильную регистрацию библиотеки SBRFCOM.dll:
SysWOW64 (который отвечает за поддержку 32-битных приложений в x64 Windows), указав полный путь к библиотеке Сбербанка:
C:\Windows\SysWOW64\regsvr32.exe "C:\Sberbank\SBRFCOM.dll"
Важный нюанс с версиями библиотек: в дистрибутивах интеграции Сбербанка с 1С поставляются два варианта DLL-файлов. Они находятся в папках 3_par (трехпараметрическая компонента) и 7_par (семипараметрическая компонента). В зависимости от версии и релиза конфигурации «Трактиръ», ей может требоваться строго определенная версия. Если после успешной регистрации библиотеки 1С выдает ошибку инициализации, попробуйте скопировать и зарегистрировать альтернативную версию компоненты из другой папки.
Когда вы запускаете сверку итогов вручную под учетной записью администратора сервера, все процессы отрабатывают без ошибок. Однако кассиры работают в RDP-сессиях под учетными записями с ограниченными правами. В момент инициализации транзакции из 1С драйвер Сбербанка пытается создать в своей папке временные файлы (например, файлы результатов авторизации e, p или логи). Если у пользователя нет прав на изменение содержимого папки, процесс прерывается молча.
Разберем, как выдать необходимые права на сервере:
C:\Sberbank и выберем пункт «Свойства».Если на одном терминальном сервере одновременно работают несколько кассиров с разными POS-кассами, использование одной общей папки C:\Sberbank приведет к неизбежным конфликтам. Пользователи будут перебивать транзакции друг друга, а настройки портов в pinpad.ini будут постоянно перезаписываться.
Чтобы избежать этой проблемы, настроим изоляцию рабочих каталогов:
pinpad.ini, расположенном в корневой папке C:\Sberbank, пропишем перенаправление временных файлов в профили пользователей:
WorkingDir=%UserProfile%\SC552
TlvDir=%UserProfile%\SC552
C:\Users\Имя_Кассира\SC552\. В нее необходимо скопировать файлы конфигурации терминала Сбербанка.Программные продукты линейки «Трактиръ» (особенно «Трактиръ: Front-Office») имеют архитектурную особенность: они часто используют для связи с банковскими терминалами не прямое обращение к компоненте Сбербанка, а специализированные внешние библиотеки, например, АТOЛ: Драйвер платежных систем.
Если в вашей системе настроена интеграция через драйвер АТОЛ:
gate.dll или исполняемому файлу sb_pilot.exe.Проброс физических COM-портов или эмулированных USB-портов через протокол RDP — это исторически нестабильная технология. Любые микросбои в локальной сети, задержки пакетов (ping) или переподключения терминальной сессии приводят к отвалу портов, зависанию кассы в момент оплаты и недовольству клиентов в очереди.
Проанализируем современную и максимально стабильную альтернативу — подключение терминала по протоколу TCP/IP (Ethernet):
pinpad.ini вместо номера COM-порта настраивается сетевой адрес устройства. Параметры будут выглядеть следующим образом:
IPAddress=192.168.1.100
IPPort=8888
Применив один или несколько описанных методов, мы сможем гарантированно подружить эквайринг Сбербанка и программный комплекс «Трактиръ» в терминальной среде Windows Server 2008.