Как подключить библиотеку SBRFCOM.dll для эквайринга Сбербанка в 1С 7.7?

Программист 1С v7.7 Торговля и дистрибуция
← На главную

При настройке эквайринга Сбербанка в 1С 7.7 разработчики часто сталкиваются с ошибками при вызове методов или неудачными попытками создания объекта внешней компоненты. Например, при вызове метода ПрочитатьХэш система может выдать сообщение «Поле агрегатного объекта не обнаружено». Рассмотрим подробнее, почему это происходит, разберем отличия старой и новой библиотек эквайринга и выясним, как правильно подключить современную компоненту.

Причины ошибок при обращении к методам

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

Также важно различать две версии библиотек:

  1. SBRF.dll — старая библиотека.
  2. SBRFCOM.dll — новая библиотека эквайринга.

Правильное подключение новой библиотеки SBRFCOM.dll

При переходе на новый эквайринг через SBRFCOM.dll, попытка создать объект напрямую через СоздатьОбъект("AddIn.SBRFCOMObject.1") приведет к ошибке инициализации. Разберем по шагам правильную последовательность подключения.

Сначала необходимо подключить саму внешнюю компоненту с использованием ее ProgID, а затем создать объект расширения. Посмотрим на пример рабочего кода:


// Подключаем внешнюю компоненту
ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject");

// Создаем объект для работы с терминалом
ОбКарт = СоздатьОбъект("AddIn.SBRFCOMExtension");

Объект AddIn.SBRFCOMExtension предоставляет свой набор методов для работы с оплатой и чеками:

Работа со старой библиотекой SBRF.dll и определение параметров карты

Если вы продолжаете использовать старую библиотеку SBRF.dll, ее ProgID для создания объекта — SBRFSRV.Server. Логика работы здесь построена на передаче числовых кодов операций.

Разберем ситуацию, когда необходимо определить, является ли карта картой Сбербанка, и получить ее хэш. Для этого используется информационная операция (код 5002):


ОбКарт = СоздатьОбъект("SBRFSRV.Server");
ОбКарт.Clear(); // Очищаем параметры
ОбКарт.NFun(5002); // Выполняем информационную операцию по карте

// Получаем результаты
ХэшКарты = ОбКарт.GParamString("hash");
ПризнакСбербанка = ОбКарт.GParamString("OWNCArd"); // "1" - своя, "0" - чужая
ЗамаскированныйНомер = ОбКарт.GParamString("ClientCard");

Ограничения платформы 1С 7.7 и нюансы регистрации

При настройке рабочего места обратите внимание на следующие технические аспекты:

  1. Разрядность: Платформа 1С 7.7 является 32-битным приложением. Следовательно, она может работать только с 32-битной версией SBRFCOM.dll.
  2. Регистрация в Windows: Если 1С запускается на современных 64-битных ОС, регистрировать библиотеку необходимо строго через 32-битную утилиту: C:\Windows\SysWOW64\regsvr32.exe "Путь_К_SBRFCOM.dll".
  3. Комплект файлов: В папке с компонентой должны находиться сопутствующие файлы от банка: GATE.DLL, SB_KERNEL.DLL, LOADPARM.EXE и файлы конфигурации.

Решение проблем при работе в терминальном режиме (RDP)

При работе в терминальном режиме или если на одном компьютере используется несколько ККМ для разных юрлиц, эквайринг может "путать" настройки терминалов. Чтобы решить эту проблему в новой библиотеке AddIn.SBRFCOMExtension, воспользуемся методом ЗадатьИмяБиблиотеки.

Создайте отдельные папки для каждого рабочего места или юридического лица с индивидуальными настройками терминала, скопируйте туда gate.dll. Перед инициализацией оплаты укажите компоненте нужный путь:

ОбКарт.ЗадатьИмяБиблиотеки("C:\Terminals\Kassa1\gate.dll");

Это позволит платформе четко понимать, к какому именно терминалу идет обращение, и избегать конфликтов оборудования.

← На главную