При автоматизации розничной торговли часто возникает ситуация, когда на одной кассовой точке работают два юридических лица (например, ООО для продажи алкоголя и ИП для сопутствующих товаров) — для этого подойдёт расширение для автоматического разделения чеков по СНО и организациям. В таких случаях к одному компьютеру необходимо подключить два физических эквайринговых терминала Сбербанка. Несмотря на кажущуюся простоту, стандартная настройка в 1С:Управление торговлей 11 может приводить к конфликтам, когда запросы на оплату уходят не на то устройство. В данной статье мы разберем, как правильно изолировать работу терминалов и настроить систему для корректной работы.
Проанализируем основную причину конфликта: стандартное ПО Сбербанка (UPOS) по умолчанию использует одну и ту же папку (обычно C:\sc552) и одни и те же ветки реестра Windows. Чтобы два терминала работали независимо, нам необходимо создать для каждого из них полностью обособленную программную среду. Рассмотрим, как это сделать по шагам.
Во-первых, создадим на диске C: две разные папки для драйверов, например, C:\sber_org1 и C:\sber_org2. В каждую из этих папок необходимо скопировать полный комплект файлов от банка (pilot.exe, pinpad.ini, gate.dll, sb_kernel.dll и другие). Важно, чтобы это были не просто ссылки, а независимые копии исполняемых файлов.
Во-вторых, в настройках 1С в разделе Подключаемое оборудование мы создадим два отдельных экземпляра оборудования с типом «Эквайринговый терминал». В настройках каждого экземпляра мы укажем путь к соответствующей папке. Это критически важный момент для драйверов типа NativeApi, которые умеют подхватывать настройки из указанного пути, не обращаясь к системному реестру.
После того как мы разделили файлы, необходимо настроить каждый терминал так, чтобы они не «дрались» за аппаратные ресурсы компьютера. Основным файлом конфигурации здесь выступает pinpad.ini. Разберем основные параметры, которые должны различаться в этих файлах:
ComPort=3, для второго — ComPort=4.Пример содержимого файла pinpad.ini для первого терминала:
[Check]
Target=P
ComPort=3
Speed=115200
TerminalID=12345678
[Application]
Log=1
Пример для второго терминала:
[Check]
Target=P
ComPort=4
Speed=115200
TerminalID=87654321
[Application]
Log=1
Перейдем к настройкам внутри 1С. Выясним причину, по которой 1С может путать терминалы в АРМ кассира — поможет виджет отображения остатков товаров в РМК. Основная проблема часто кроется в привязке оборудования к объекту Рабочее место. В 1С:УТ 11 рабочее место идентифицируется связкой имени компьютера и текущего пользователя Windows.
Рассмотрим порядок действий для корректной привязки:
Если установка двух физических терминалов кажется избыточной, существует альтернативный вариант — использование одного терминала с поддержкой нескольких отделов (мерчантов). Сбербанк поддерживает такую технологию, но она требует специальной прошивки устройства специалистами банка.
При таком подходе в папке с драйвером появляется файл ecomm.xml. В нем описывается структура отделов:
<Departments>
<Department Id="1" MerchantId="123456789012" />
<Department Id="2" MerchantId="987654321098" />
</Departments>
Однако, как было отмечено в обсуждении, в типовых конфигурациях УТ 11 (особенно старых релизов 11.4) существует «косяк»: при пробитии чека из АРМ кассира параметр Department (номер отдела) может передаваться некорректно или всегда иметь значение «0». Чтобы это исправить, программисту необходимо проверить процедуру передачи параметров в драйвер эквайринга. Выясним причину: в модулях интеграции с оборудованием значение отдела должно браться из карточки Эквайринговый терминал, где в поле «Номер отдела» должен стоять индекс, соответствующий Id в файле ecomm.xml.
Важным решением проблемы «перепутывания» терминалов является переход на современные драйверы типа NativeApi. В отличие от старых COM-компонентов (SberbankES.dll), которые регистрируются в системе через regsvr32 и создают глобальную ссылку в реестре, NativeApi-драйверы загружаются динамически из указанной папки.
Посмотрим на преимущества этого метода: когда 1С вызывает метод Подключить(), она передает путь к конкретной библиотеке gate.dll. Система создает отдельный экземпляр процесса для каждой оплаты. Это исключает ситуацию, когда второй терминал пытается использовать настройки первого, «застрявшие» в реестре Windows.
Не забудем про аппаратную составляющую. При подключении двух энергоемких устройств (а современные терминалы с цветными дисплеями потребляют немало) к одному USB-контроллеру материнской платы, могут возникать микро-сбои питания. Это приводит к тому, что один из терминалов «отваливается» и пропадает из списка COM-портов.
Рекомендуем придерживаться следующих правил:
Таким образом, комбинируя разделение каталогов драйверов, использование NativeApi и корректную привязку оборудования к кассам в настройках РМК, мы можем добиться стабильной и независимой работы двух терминалов Сбербанка в рамках одной информационной базы 1С — для обеспечения безналичных расчетов также подойдет интеграция оплаты по QR-кодам Сбербанка в интерфейсе 1С.