Как подключить эквайринговый терминал Сбербанка к 1С 8.3 на ОС Linux и исправить ошибку «Не заполнена колонка \"Номер платёжной карты\"»?

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

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

Выясняем причины несовместимости и ошибок

Прежде всего проанализируем ситуацию с технической точки зрения. Исторически драйвер «1С:Эквайринговые терминалы Сбербанк» версии 1.х разрабатывался под ОС Windows. Он использовал COM-технологии и динамические библиотеки sbrf.dll и SBRFCOM.dll. Попытка запустить эту компоненту на Linux напрямую не увенчается успехом — система закономерно сообщит, что компонента не найдена или не может быть загружена.

Для решения этой проблемы фирма «1С» совместно со Сбербанком разработала кроссплатформенный драйвер нового поколения — «1С:Эквайринговые терминалы Сбербанк 2.Х», работающий по технологии NativeAPI. Этот драйвер изначально поддерживает работу в Linux (32- и 64-бит) без эмуляторов типа Wine.

Вторая проблема — ошибка «Не заполнена колонка "Номер платёжной карты" в строке 1 списка "Оплаты платёжными картами"». Это классический конфликт версий БПО. Эквайринговый терминал отправляет ответ о завершении операции, но 1С ожидает маскированный номер карты в строго определенном формате. Если версия БПО устарела (например, используется БПО 2.1, как у автора темы), программа не может сопоставить возвращенные драйвером параметры и блокирует проведение чека.

Шаг 1. Переход на современную версию БПО и драйвер NativeAPI

Рассмотрим, как правильно обновить интеграционную компоненту. Если вы работаете в конфигурации «1С:Управление торговлей 11» (УТ 11) или «1С:Розница», наилучшим решением будет обновление конфигурации до актуального релиза, содержащего БПО версии 3.1 или выше. В этих версиях новый драйвер Сбербанка интегрирован по умолчанию.

Если возможности быстро обновить всю конфигурацию нет, мы можем «вытащить» нужный драйвер из демо-базы БПО последней версии и загрузить его в текущую информационную базу. Для этого выполним следующие действия:

  1. Скачаем актуальный дистрибутив «1С:Библиотека подключаемого оборудования 3.х» с портала поддержки пользователей.
  2. Создадим пустую базу на основе демонстрационного шаблона БПО.
  3. Перейдем в раздел Администрирование — Подключаемое оборудование — Драйверы оборудования.
  4. Найдем в списке драйвер «Сбербанк эквайринговые терминалы (NativeApi)» версии 2.х и сохраним его в файл на диск (команда «Выгрузить драйвер»).
  5. В рабочей базе «1С:Управление торговлей» зайдем в аналогичный справочник драйверов, нажмем кнопку «Добавить новый драйвер из файла» и укажем сохраненный архив.

Шаг 2. Исправление ошибки «Номер платёжной карты» в настройках РМК

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

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

  1. Перейдем в раздел НСИ и администрирование — РМК и оборудование.
  2. Откроем пункт Настройки РМК и выберем используемую настройку для текущего рабочего места кассира.
  3. Перейдем на вкладку Эквайринговые терминалы (или настройки способов оплаты).
  4. Найдем опцию «Не запрашивать номер карты» (в некоторых редакциях она называется «Не вводить номер платежной карты») и установим напротив нее флаг (галочку).
  5. Сохраним настройки и перезапустим сеанс кассира.

После этой манипуляции 1С перестанет требовать обязательного заполнения реквизита номера карты в табличной части документа оплаты, и чек будет пробит успешно.

Шаг 3. Настройка прав доступа к COM-портам в Linux

Для взаимодействия с терминалом в ОС Linux используется специализированная консольная утилита sb_pilot. Поскольку большинство терминалов подключаются по интерфейсу USB с эмуляцией последовательного порта (COM-порта), в операционной системе Linux они монтируются как символьные устройства в каталоге /dev/. Обычно это /dev/ttyACM0 или /dev/ttyUSB0.

По умолчанию у обычного пользователя Linux (под которым запускается платформа «1С:Предприятие») нет прав на чтение и запись в эти системные порты. Нам необходимо предоставить эти права, добавив пользователя в соответствующую группу.

Проанализируем команды терминала Linux для решения этой задачи. Откроем консоль операционной системы и выполним следующие действия:

Добавим текущего пользователя (или пользователя, от имени которого работает тонкий/толстый клиент 1С) в группу доступа к последовательным устройствам (обычно это группа dialout, в дистрибутивах Arch Linux или RedHat это может быть группа uucp):

sudo usermod -aG dialout $USER

Для того чтобы изменения вступили в силу, необходимо полностью завершить текущую сессию пользователя в Linux (выйти из системы) и войти заново, либо выполнить перезагрузку компьютера.

Также мы можем создать правило для менеджера устройств udev, чтобы порт терминала всегда создавался с нужными правами доступа. Для этого создадим файл правил:

sudo nano /etc/udev/rules.d/99-sberbank.rules

Добавим в него следующую строку, которая разрешит всем пользователям чтение и запись для устройств с эмуляцией COM-портов Сбербанка:


KERNEL=="ttyACM[0-9]*", MODE="0666"
KERNEL=="ttyUSB[0-9]*", MODE="0666"

После этого перезапустим службу udev командой sudo udevadm control --reload-rules.

Шаг 4. Настройка и тестирование утилиты `sb_pilot`

Разберем подробнее установку самой утилиты интеграции со Сбербанком. Все необходимые файлы (библиотеки, конфигурационные файлы pinpad.ini) предоставляются технической поддержкой банка. Обычно они размещаются в каталоге /opt/sc552/.

Убедимся, что исполняемый файл sb_pilot имеет права на выполнение. Для этого перейдем в каталог с утилитой и назначим права:


cd /opt/sc552/
sudo chmod +x sb_pilot

Посмотрим на пример проверки связи с банком напрямую из консоли Linux, не запуская 1С. Это позволит нам локализовать проблему и понять, правильно ли настроен порт в pinpad.ini.

Запустим команду вызова сервисного меню терминала:

./sb_pilot 11

Если на экране терминала загорелось меню или начался процесс сверки итогов — физическое подключение и утилита настроены верно.

Для проведения тестового платежа на сумму 1 рубль можно использовать команду:

./sb_pilot 1 100

Где 1 — код операции оплаты, а 100 — сумма операции в копейках.

Шаг 5. Настройка параметров подключения в 1С

Теперь вернемся в интерфейс программы «1С:Предприятие 8.3». Нам осталось прописать путь к настроенной и проверенной утилите Сбербанка в параметрах подключения оборудования:

  1. Зайдем в раздел Администрирование — Подключаемое оборудование.
  2. Выберем наш эквайринговый терминал и нажмем кнопку «Настроить».
  3. В поле «Путь к sb_pilot» укажем полный путь к исполняемому файлу в Linux-системе, например: /opt/sc552/sb_pilot.
  4. В поле «Каталог обмена» (если используется файловый обмен) укажем путь к папке с конфигурационными файлами терминала (/opt/sc552/).
  5. Нажмем кнопку «Тест подключения». Программа должна вернуть сообщение об успешном прохождении теста связи.

Таким образом, благодаря использованию NativeAPI драйвера версии 2.х, правильному назначению прав доступа к портам в Linux и отключению контроля номера карты в настройках РМК, мы получаем стабильно работающий эквайринг Сбербанка на рабочих местах кассиров под управлением ОС Linux.

← На главную