При интеграции кассового ПО (например, 1С:Управление торговлей 11) с банковскими терминалами Ingenico, работающими по протоколу Arcus 2 (часто встречается у банков ПСБ, ВТБ), системные администраторы сталкиваются с проблемой: на распечатанном слип-чеке отсутствует номер операции или номер чека. Это делает невозможным проведение возврата, так как банковское ПО требует ввода RRN или номера чека с оригинала слипа. Разберем подробно, почему это происходит и как заставить систему работать корректно.
Для начала проанализируем, как терминал обменивается данными с компьютером. В протоколе Arcus 2 взаимодействие происходит через файловый обмен или через динамические библиотеки (ВК). В процессе транзакции ПО терминала создает несколько ключевых файлов в своей рабочей директории (обычно C:\Arcus2):
Если в 1С номер чека пустой, это означает, что программа смогла прочитать статус операции, но не смогла получить или распарсить содержимое файла cheq.out. Выясним причину, по которой этот файл может отсутствовать или быть пустым.
Первым делом рассмотрим настройки самого Arcus. Перейдем в папку с установленным ПО терминала и найдем конфигурационный файл. Обычно он находится по пути: C:\Arcus2\INI\cashreg.ini. Проанализируем содержимое секции настроек вывода чека.
Найдем и проверим следующие параметры:
[CashReg]
; Имя файла, в который будет выводиться образ чека
CHEQ_FILE=cheq.out
; Флаг удаления файла после операции (0 - не удалять, 1 - удалять)
DELETE_CHEQ=0
Важный момент: если параметр CHEQ_FILE переопределен (например, указано CHEQ_FILE=chek.out), то образ чека будет записываться в тот же файл, что и результаты операции. Это часто приводит к конфликтам в 1С, так как драйвер ожидает найти там только коды ответов. Убедимся, что имена файлов разделены.
Рассмотрим ситуацию: в логах терминала мы видим успешную запись (write result: [0]), но в папке файла нет. Разберем три основные причины этого явления:
sale.bat в папке Arcus2). Если при запуске вручную файл cheq.out остается на месте — виновата 1С или её компонента.C:\Arcus2. В этом случае операционная система незаметно перенаправляет файл в виртуальное хранилище пользователя. Проверим наличие файла по пути:
%LOCALAPPDATA%\VirtualStore\Arcus2\cheq.exe без явного указания рабочей директории, файл может создаться в папке платформы 1С (bin) или в папке временных файлов пользователя.Если файл создается, но номер на чеке все равно пустой, значит, 1С не может его найти внутри текста. Посмотрим на пример лога, который предоставляет банк:
RECV <- PRINT:Терм:***01 Чек 198
[cheq.out] write result: [0]
SEND -> OK
RECV <- PRINT: ОДОБРЕНО
Проблема может заключаться в шаблоне чека. Банк ПСБ иногда настраивает шаблоны так, что номер чека идет в нестандартной строке, которую встроенный драйвер 1С просто не распознает. Рассмотрим пути решения:
В настройках "Подключаемого оборудования" в 1С попробуем сменить обработчик драйвера. Если вы используете "Arсus 2: Эквайринговые терминалы", попробуйте обновить компоненту до последней версии или использовать драйвер "1С: Эквайринговые терминалы (Universal)". Современные версии драйверов умеют более гибко искать RRN и номер чека в текстовом полотне.
Свяжемся с техподдержкой банка и попросим изменить параметризацию терминала. Необходимо, чтобы номер чека и RRN передавались в структурированном виде в ответе от терминала (в файл rc.out), а не только в тексте слипа. Для ПСБ это стандартная процедура, но её нужно запрашивать отдельно.
Если подозрение падает на антивирус или права доступа, проанализируем журнал событий Windows. Посмотрим в раздел "Система" и "Приложение". Если какой-то процесс блокирует запись файла cheq.out, там могут быть записи об ошибках доступа Access Denied.
Подводя итог, алгоритм наших действий будет следующим:
cashreg.ini, убеждаемся, что CHEQ_FILE указан верно.sale.bat (вне 1С).cheq.out создается и в нем ЕСТЬ номер, значит, проблема в компоненте 1С, которая либо его не читает, либо удаляет.VirtualStore и права доступа на папку Arcus2 для группы "Все".Помните, что корректная работа эквайринга зависит от слаженной настройки трех звеньев: прошивки терминала (банк), настроек локального ПО (Arcus) и драйвера интеграции (1С).