В розничной торговле при интеграции 1С с эквайринговыми терминалами нередко возникает критическая ситуация: покупатель прикладывает банковскую карту, терминал успешно выполняет транзакцию и списывает денежные средства, но в этот момент клиентское приложение 1cv8c.exe аварийно закрывается. В результате фискальный чек на ККТ не печатается, в РМК документ остается отложенным или неотправленным, а в журнале событий Windows фиксируется ошибка с кодом 0xc0000005 (Access Violation) в модуле sbrfcom.dll.
Проанализируем причины возникновения этой проблемы и разберем по шагам, как настроить стабильную работу связки 1С, эквайрингового терминала и кассового аппарата, а также как корректно выравнивать кассовые смены при возникновении сбоев.
Выясним причину, по которой процесс 1С падает именно в момент возврата ответа от банковского терминала:
sbrfcom.dll представляет собой классический COM-сервер in-process. Если внутри библиотеки происходит некорректная работа с памятью, утечка буфера или сбой дескриптора порта, Windows принудительно завершает весь родительский процесс 1cv8c.exe без возможности перехвата ошибки блоком Попытка — Исключение в коде 1С.C:\sc552) в момент операции непрерывно создает, перезаписывает и удаляет временные файлы ответов и логи. Если антивирус блокирует эти файлы на время проверки либо у пользователя Windows ограничены права на изменение каталога, библиотека падает с нарушением прав доступа к памяти.sbkernel теряет связь с устройством в момент получения криптографического ответа.Самым надежным способом устранения аварийных завершений 1С является отказ от прямой загрузки sbrfcom.dll в память клиента. Рассмотрим подробнее, как перевести рабочее место на изолированный режим:
sb_pilot. Это изолирует память 1С: даже если процесс обмена с банком завершится с ошибкой, платформа 1С не упадет, а корректно обработает исключение и уведомит кассира.Разберем системные настройки каталога банковского софта, чтобы исключить ошибки блокировки файлов:
C:\sc552) в проводнике Windows и перейдем на вкладку Безопасность.Пользователи (или учетную запись кассира) и установим флаг Полный доступ (Full Control).C:\sc552, а также исполняемые файлы 1cv8c.exe и sb_pilot.exe в список исключений антивирусного монитора и встроенного защитника Windows.vcredist.Для предотвращения разрыва связи терминала с компьютером во время транзакции выполним настройку питания:
devmgmt.msc).Корневого USB-концентратора (USB Root Hub) и на вкладке Управление электропитанием снимем флаг «Разрешить отключение этого устройства для экономии энергии».pinpad.ini проверим совпадение скорости порта (параметр Speed) со значением скорости, выставленным в диспетчере устройств.Рассмотрим, как правильно действовать кассиру и администратору, если сбой все же произошел: деньги с покупателя списаны, но чек на фискальном накопителе не зарегистрирован.
1. Настройка дублирующего автономного терминала в 1С
Чтобы кассир мог пробить фискальный чек без повторного списания денег с карты клиента, добавим резервный терминал:
2. Оформление чека коррекции при обнаружении расхождения
Если кассир отменил чек, а покупатель уже ушел, в конце смены возникнет расхождение между Z-отчетом кассы и банковской сверкой итогов. В этом случае выполним корректировку: