При интеграции торгового оборудования, в частности эквайринговых терминалов Ingenico, работающих через протокол Arcus2 (часто используется банком ВТБ), технические специалисты часто сталкиваются с критической ситуацией. Денежные средства с карты клиента успешно списываются, банк подтверждает операцию, однако в 1С:Розница всплывает окно с ошибкой: "Эквайринговая операция не была проведена: System error: 001 Details: Contact card issuer". В результате чек ККМ не пробивается, а в системе 1С операция оплаты не фиксируется. Если деньги уже списаны банком, для фиксации оплаты и печати фискального чека можно применить расширение для аварийного пробития чека при ошибке эквайринга.
Рассмотрим детально, почему возникает эта ошибка, как проанализировать логи и какие шаги предпринять для восстановления корректной работы связки 1С и банковского терминала.
Ошибка Contact card issuer (Свяжитесь с банком-эмитентом) в стандартных банковских протоколах обычно означает отказ со стороны банка, выдавшего карту. Однако в случае работы через драйвер Arcus2 и конфигурацию 1С:Розница, ситуация иная. Если средства фактически списаны, это сигнализирует о том, что терминал успешно связался с банковским хостом, но не смог корректно передать подтверждение в 1С или сама 1С неверно интерпретировала ответ от компоненты.
Проанализируем основные причины возникновения этого сбоя:
cheque.txt, result.dat). Если у пользователя Windows, под которым запущена 1С, нет прав на изменение или удаление файлов в папке C:\Arcus2, драйвер вернет ошибку.Выясним, какой драйвер используется в вашей системе. Перейдем в раздел Администрирование — Подключаемое оборудование. Найдем ваш эквайринговый терминал и откроем его настройки. Обратим внимание на поле "Драйвер оборудования".
Проанализируем ситуацию с версиями. Часто релизы 1С:Розница 2.2 и 2.3 содержат встроенные компоненты, которые могут конфликтовать с обновленным ПО от банка. Попробуем обновить только компоненту (драйвер), не затрагивая всю конфигурацию. Для этого выполним следующие действия:
DualConnector.dll, которую можно запросить в техподдержке банка.Важный нюанс: Убедитесь, что разрядность DualConnector.dll (x86 или x64) соответствует разрядности платформы 1С, которую вы используете. Если вы работаете в 32-битной платформе, 64-битный драйвер работать не будет.
Проанализируем взаимодействие 1С с папкой обмена. По умолчанию ПО Arcus2 устанавливается в корень диска C:\Arcus2. Для стабильной работы нам необходимо обеспечить беспрепятственный доступ 1С к этой папке.
Выполним следующие рекомендации:
C:\Arcus2 и все вложенные файлы.C:\Arcus2 в исключения антивируса. Защитное ПО может блокировать создание временного файла out.dat, который 1С считывает для подтверждения успеха операции.В корневой папке ПО Arcus2 находится конфигурационный файл cashier.xml. Разберем ключевые параметры, которые влияют на возникновение системных ошибок:
<CashierConfig>
<Protocol>1</Protocol>
<Timeout>90</Timeout>
<LogPath>C:\Arcus2\LOGS</LogPath>
</CashierConfig>
Посмотрим на параметр Timeout. Если терминал долго связывается с банком, 1С может "отвалиться" по таймауту, не дождавшись ответа. Рекомендуется установить значение не менее 90 секунд. Также стоит проверить параметр Protocol — он должен соответствовать тому, что указано в настройках драйвера в 1С (Native API или COM).
Если ошибка сохраняется, нам необходимо понять, на чьей стороне происходит сбой. Для этого проанализируем файл лога, который обычно называется p.log или находится в подпапке LOG внутри директории Arcus2.
Найдем в логе строку последней операции. Нас интересует код ответа (Response Code):
В такой ситуации часто помогает принудительная очистка папки обмена. Удалим все файлы с расширением .txt и .dat из папки C:\Arcus2 перед началом новой смены. Зависший файл от предыдущей (пусть даже тестовой) операции может блокировать запись новых данных.
Как отмечалось в обсуждениях, критически важным является правильный выбор типа процессинга при инсталляции банковского ПО. Если при установке Arcus2 был выбран тип, отличный от того, который ожидает драйвер 1С, возникнет рассинхронизация команд. Рассмотрим, как это исправить:
config.exe в папке Arcus2).Подводя итог, можно сказать, что ошибка System error: 001 в 1С при работе с терминалами VTB/Ingenico — это почти всегда проблема "последней мили" связи между банковской библиотекой и платформой 1С. Для решения проблемы:
1. Не спешите обновлять весь релиз 1С:Розница, так как это может повлечь другие ошибки. Попробуйте сначала обновить только файл DualConnector.dll.
2. Проверьте права доступа к папке Arcus2.
3. Синхронизируйте настройки таймаута в cashier.xml и в настройках оборудования в 1С.
4. Всегда проверяйте логи (p.log), чтобы убедиться, что деньги действительно ушли в банк, прежде чем делать повторную операцию, чтобы избежать двойного списания у клиента.