Как настроить работу с эквайринговым терминалом Сбербанка из 1С и печать слип-чеков на ККТ?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При автоматизации розничной торговли часто возникает задача интеграции безналичной оплаты с программой 1С. Рассмотрим, как устроено взаимодействие платформы 1С с эквайринговыми терминалами Сбербанка, в чем разница между моделями оборудования и как организовать печать банковского слип-чека напрямую через фискальный регистратор (ККТ).

Автономный или интегрированный терминал: что выбрать?

Проанализируем основные принципы работы эквайрингового оборудования с учетной системой:

  1. Автономный терминал: работает обособленно. Кассир вручную вводит сумму оплаты на клавиатуре самого пин-пада. Терминал самостоятельно связывается с банком и распечатывает банковский слип-чек на собственном встроенном принтере. Управлять таким устройством из 1С (передавать сумму или инициировать команду оплаты) нельзя.
  2. Интегрированный терминал: подключается к компьютеру кассира через USB или RS-232. Сумма к оплате передается из 1С автоматически. Терминал проводит транзакцию, а текст банковского слип-чека передает обратно в 1С. После этого программа отправляет полученный текст на печать в ККТ (например, Атол 11Ф) вместе с фискальным чеком.

Таким образом, для автоматической передачи сумм из 1С необходим именно интегрированный терминал.

Архитектура взаимодействия 1С и ПО Сбербанка

Разберем по шагам, как происходит обмен данными при вызове эквайринговой операции из программы:

  1. 1С передает команду на оплату и сумму (обычно в копейках, умноженную на 100) во внешнюю библиотеку или утилиту Сбербанка.
  2. Банковское ПО (компоненты gate.dll, sb_pilot.exe или COM-объект SBRFCOM.dll) обращается к пин-паду через COM-порт.
  3. Покупатель прикладывает карту или вводит ПИН-код. Терминал связывается с процессингом Сбербанка.
  4. После выполнения операции банковское ПО создает файл ответа (обычно с именем p) или заполняет выходные параметры в объекте 1С, возвращая код авторизации, ссылочный номер и сформированные строки слип-чека.
  5. Программа 1С считывает строки слип-чека и отправляет их на кассовый аппарат для печати.

Способы программной интеграции в 1С

Существует несколько способов работы с терминалом Сбербанка из кода 1С:

1. Использование Библиотеки Подключаемого Оборудования (БПО)

В современных типовых конфигурациях (1С:Розница, 1С:УТ, 1С:ERP) используется стандартный механизм БПО и модуль ПодключаемоеОборудованиеСБРФЭквайринговыеТерминалыКлиент. Для подключения терминала не требуется регистрировать COM-компоненты через regsvr32. Достаточно установить драйвер «1С:Эквайринговые терминалы Сбербанк 2.х» (NativeAPI) и указать в настройках оборудования путь к рабочему каталогу Сбербанка (например, C:\sc552\ или C:\SBERBANK\PILOT_NT\).

2. Прямой вызов COM-объекта SBRFCOM.dll

Этот способ часто применяется в доработанных и нетиповых конфигурациях. Рассмотрим пример кода на языке 1С для вызова операции оплаты:


&НаКлиенте
Функция ОплатитьКартой(СуммаВРублях)
    Результат = Ложь;
    СсылочныйНомер = Неопределено;
    КодАвторизации = Неопределено;
    КодХеш = Неопределено;
    КартаСбербанка = Неопределено;
    НазваниеКарты = Неопределено;
    Ошибка = Неопределено;
    
    // Перевод суммы в копейки
    СуммаВременная = СуммаВРублях * 100;
    НомерКарты = "****************";
    
    Попытка
        // Вызов метода оплаты через зарегистрированный объект драйвера
        Ответ = ОбъектДрайвераАвторизатора.ОплатитьПлатежнойКартой(
            СуммаВременная, 
            СсылочныйНомер, 
            КодАвторизации, 
            КодХеш, 
            КартаСбербанка, 
            НазваниеКарты, 
            НомерКарты
        );
    Исключение
        Сообщить("Ошибка при работе с библиотекой SBRFCOM: " + ОписаниеОшибки());
        Возврат Результат;
    КонецПопытки;
    
    Если НЕ Ответ Тогда
        ОбъектДрайвераАвторизатора.ПолучитьОшибку(Ошибка);
        Сообщить("Ошибка оплаты: " + Ошибка);
    Иначе
        СлипЧек = Неопределено;
        Результат = ПолучитьСтрокиСлипЧека(СлипЧек);
        Если Результат Тогда
            // Здесь выполняется отправка массива строк СлипЧек в драйвер ККТ
            // ПечатьТекстаНаККТ(СлипЧек);
        Иначе
            Сообщить("Произошла ошибка при получении чека. Аварийная отмена операции...");
            АварийнаяОтменаОперации(СуммаВРублях, СсылочныйНомер);
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

3. Вызов консольной утилиты sb_pilot.exe

Если возникли сложности с регистрацией COM-компоненты или разрядностью платформы, можно вызвать утилиту sb_pilot.exe из 1С с помощью функции ЗапуститьПриложение, передав ей код операции и сумму. После завершения процесса 1С вычитывает сформированный утилитой текстовый файл ответа p.

Печать слип-чека на ККТ (Атол)

Банковский слип-чек передается в ККТ как нефискальный текст. Драйвер ККТ Атол (версий 8.x или 10.x) принимает массив строк и последовательно выводит их на чековую ленту без регистрации позиций в фискальном накопителе (ФН). Только после этого печатается сам фискальный чек с позициями товаров.

Важные технические нюансы при настройке

Выделим несколько ключевых моментов, о которых стоит помнить системным администраторам и разработчикам:

← На главную