Почему при оплате картой в 1С списываются деньги, но не пробивается чек и вылетает программа?

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

В розничной торговле при интеграции 1С с эквайринговыми терминалами нередко возникает критическая ситуация: покупатель прикладывает банковскую карту, терминал успешно выполняет транзакцию и списывает денежные средства, но в этот момент клиентское приложение 1cv8c.exe аварийно закрывается. В результате фискальный чек на ККТ не печатается, в РМК документ остается отложенным или неотправленным, а в журнале событий Windows фиксируется ошибка с кодом 0xc0000005 (Access Violation) в модуле sbrfcom.dll.

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

Причины сбоя компоненты эквайринга и падения 1С

Выясним причину, по которой процесс 1С падает именно в момент возврата ответа от банковского терминала:

  1. Работа устаревшей COM-библиотеки в адресном пространстве процесса: библиотека sbrfcom.dll представляет собой классический COM-сервер in-process. Если внутри библиотеки происходит некорректная работа с памятью, утечка буфера или сбой дескриптора порта, Windows принудительно завершает весь родительский процесс 1cv8c.exe без возможности перехвата ошибки блоком Попытка — Исключение в коде 1С.
  2. Блокировка служебных файлов в каталоге обмена: драйвер Сбербанка (каталог по умолчанию C:\sc552) в момент операции непрерывно создает, перезаписывает и удаляет временные файлы ответов и логи. Если антивирус блокирует эти файлы на время проверки либо у пользователя Windows ограничены права на изменение каталога, библиотека падает с нарушением прав доступа к памяти.
  3. Энергосбережение и сброс виртуального COM-порта: при подключении пинпада через USB-кабель операционная система может кратковременно отключать питание порта или сбрасывать буфер передачи, из-за чего модуль sbkernel теряет связь с устройством в момент получения криптографического ответа.
  4. Перехват клавиатурного ввода и сканера штрихкодов: модальные окна устаревших компонент чувствительны к внешним прерываниям. Случайное нажатие кассиром клавиши на клавиатуре или считывание штрихкода в момент ожидания ответа терминала приводит к сбросу операции со стороны драйвера, при этом банковский хост транзакцию уже подтвердил.

Шаг 1. Переход на современный драйвер NativeAPI

Самым надежным способом устранения аварийных завершений 1С является отказ от прямой загрузки sbrfcom.dll в память клиента. Рассмотрим подробнее, как перевести рабочее место на изолированный режим:

  1. В конфигурации «1С:Розница» перейдем в раздел Администрирование — Подключаемое оборудование — Эквайринговые терминалы.
  2. Вместо устаревшего обработчика «Сбербанк: Эквайринговые терминалы» установим современный драйвер «1С:Эквайринговые терминалы Сбербанк 2.X» на базе технологии NativeAPI.
  3. Данный драйвер взаимодействует с банковским ПО через внешнюю утилиту sb_pilot. Это изолирует память 1С: даже если процесс обмена с банком завершится с ошибкой, платформа 1С не упадет, а корректно обработает исключение и уведомит кассира.

Шаг 2. Настройка прав доступа и исключений антивируса

Разберем системные настройки каталога банковского софта, чтобы исключить ошибки блокировки файлов:

  1. Откроем свойства папки с банковским ПО (например, C:\sc552) в проводнике Windows и перейдем на вкладку Безопасность.
  2. Нажмем кнопку Изменить, выберем группу Пользователи (или учетную запись кассира) и установим флаг Полный доступ (Full Control).
  3. Добавим рабочий каталог эквайринга C:\sc552, а также исполняемые файлы 1cv8c.exe и sb_pilot.exe в список исключений антивирусного монитора и встроенного защитника Windows.
  4. Очистим кэш пользователя 1С и при необходимости перерегистрируем служебные библиотеки и компоненты распространяемого пакета vcredist.

Шаг 3. Отключение энергосбережения USB и COM-портов

Для предотвращения разрыва связи терминала с компьютером во время транзакции выполним настройку питания:

  1. Откроем Диспетчер устройств Windows (команда devmgmt.msc).
  2. Развернем ветку Контроллеры USB, откроем свойства каждого Корневого USB-концентратора (USB Root Hub) и на вкладке Управление электропитанием снимем флаг «Разрешить отключение этого устройства для экономии энергии».
  3. В разделе Порты (COM и LPT) найдем используемый виртуальный COM-порт пинпада, откроем его свойства и также проверим параметры электропитания.
  4. В параметрах схемы электропитания Windows в дополнительных настройках отключим параметр «Временное отключение USB-порта».
  5. В файле конфигурации терминала pinpad.ini проверим совпадение скорости порта (параметр Speed) со значением скорости, выставленным в диспетчере устройств.

Регламент исправления расхождений и повторного пробития чека

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

1. Настройка дублирующего автономного терминала в 1С

Чтобы кассир мог пробить фискальный чек без повторного списания денег с карты клиента, добавим резервный терминал:

  1. В справочнике Подключаемое оборудование создадим второй эквайринговый терминал с признаком «Без подключения к системе» (автономный режим).
  2. При возникновении сбоя кассир открывает отложенный чек в РМК, выбирает оплату платежной картой через этот автономный терминал и нажимает кнопку пробития.
  3. 1С сформирует фискальный чек на ККМ и закроет документ в базе данных, не отправляя повторный запрос на списание средств в банк.

2. Оформление чека коррекции при обнаружении расхождения

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

  1. Создадим фискальный документ «Чек коррекции» с признаком расчета «Приход».
  2. Укажем тип оплаты «Безналичными» на сумму зависшей транзакции.
  3. Пробьем чек коррекции на ККТ — это выровняет фискальные счетчики с фактическим балансом расчетного счета предприятия.
← На главную