При работе с торговым оборудованием в 1С:Управление торговлей 10.3 (и других конфигурациях на обычных формах) пользователи часто сталкиваются с внезапной остановкой возможности оплаты по терминалу, для восстановления которой может потребоваться подключение эквайрингового терминала от Сбербанка. Ошибка выглядит следующим образом: Недостаточно фактических параметров Ответ = Объект.Драйвер.ОплатитьПлатежнойКартой(мСумма, КодRRN, КодАвторизации);. Рассмотрим подробно, почему это происходит и как вернуть работоспособность эквайринга.
Проанализируем ситуацию: ошибка обычно проявляется после того, как сотрудники банка обновили программное обеспечение терминала или заменили само устройство (например, на Ingenico IPP320). Проблема кроется в библиотеке SBRFCOM.dll, которая отвечает за связь между 1С и банковским софтом (Gate/Pilot).
Существует две основные версии этой библиотеки:
Когда 1С вызывает метод ОплатитьПлатежнойКартой с тремя аргументами, а в системе зарегистрирована новая библиотека, ожидающая семь, платформа выдает ошибку о недостаточности параметров и прерывает операцию.
Это самый быстрый способ, не требующий навыков программирования в 1С. Разберем по шагам, как правильно заменить и перерегистрировать библиотеку.
C:\sc552\.1C. В современных дистрибутивах Сбербанка там часто лежат две папки: 3_par и 7_par.3_par, скопируем файл SBRFCOM.dll (он обычно меньше по размеру, около 200 Кб).C:\sc552\ и вставим файл с заменой существующего. Также рекомендуется скопировать этот файл в системную папку C:\Windows\SysWOW64 (для 64-битных ОС) или C:\Windows\System32 (для 32-битных).Теперь необходимо перерегистрировать библиотеку в операционной системе. Разберем, как это сделать правильно через командную строку (CMD), запущенную от имени администратора:
regsvr32 /u "C:\sc552\SBRFCOM.dll"
regsvr32 "C:\sc552\SBRFCOM.dll"
Важный момент: Если вы работаете на 64-битной Windows, используйте регистратор из папки SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\sc552\SBRFCOM.dll"
После регистрации обязательно перезагрузите компьютер, чтобы завершить обновление путей в реестре.
Если вы хотите использовать современную библиотеку (7 параметров), чтобы избежать проблем с безопасностью и будущими обновлениями, можно доработать внешнюю обработку обслуживания (файл .epf). Проанализируем, какие изменения нужно внести.
Найдем в модуле объекта обработки функцию ОплатитьПлатежнойКартой. Нам нужно добавить пустые строковые параметры, чтобы общее количество аргументов стало равно семи. Посмотрим на пример кода:
// Старый вариант вызова:
// Ответ = Объект.Драйвер.ОплатитьПлатежнойКартой(мСумма, КодRRN, КодАвторизации);
// Новый вариант для библиотеки на 7 параметров:
Ответ = Объект.Драйвер.ОплатитьПлатежнойКартой(мСумма, КодRRN, КодАвторизации, "", "", "", "");
Такой подход позволит 1С корректно взаимодействовать с новой библиотекой, игнорируя дополнительные поля, которые в контексте базовой оплаты в УТ 10.3 часто не требуются.
После манипуляций с библиотеками могут возникнуть вторичные ошибки. Рассмотрим наиболее частые:
Ошибка 4309: Это ошибка Сбербанка, означающая проблему с открытием порта или отсутствие связи с терминалом.
pinpad.ini в папке C:\sc552\. Убедимся, что параметр ComPort=... соответствует номеру порта, на котором висит терминал в Диспетчере устройств.sb_kernel.dll и gate.dll в той же папке. Они должны быть из того же набора, что и SBRFCOM.dll.pilot.exe, которые могут блокировать порт.Ошибка «Порт недоступен» (АТОЛ): Если при открытии 1С ругается на занятый порт ККТ, это может быть связано с тем, что драйвер Сбербанка при инициализации пытается «прощупать» все порты и конфликтует с кассой. Убедитесь, что в настройках торгового оборудования 1С терминал и касса разнесены на разные логические и физические порты.
Проанализируем ситуацию с поддержкой: зачастую специалисты банка не знают нюансов работы 1С и устанавливают самое последнее ПО, не проверяя совместимость. Если вы используете старую конфигурацию вроде УТ 10.3, лучше всего придерживаться следующей стратегии:
sc552 с настроенными библиотеками.SBRFCOM.dll могут блокироваться системой защиты.Таким образом, мы разобрали, что ключевая причина проблемы — несоответствие интерфейса вызова метода в 1С и реализации этого метода в DLL-библиотеке драйвера. Выбрав один из предложенных путей (откат библиотеки или правка кода), вы сможете восстановить прием платежей в кратчайшие сроки.