Почему при оплате картой через терминал Сбербанка зависает 1С:Розница и не выходит фискальный чек?

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

Проблема зависания кассового места при проведении эквайринговой операции — одна из самых неприятных ситуаций в ритейле. Часто мы сталкиваемся с тем, что деньги с карты клиента списались, терминал выдал слип-чек, а 1С:Розница «зависла» или выдала ошибку, не напечатав фискальный чек. Давайте разберем, почему это происходит и какие меры помогут стабилизировать работу кассы.

Анализ причин сбоя

Основная причина кроется в рассинхронизации между 1С:Розница, драйвером платежных систем (UPOS) и самой ККТ. Когда банковский терминал возвращает данные об успешной транзакции в формате XML, кассовое ПО ожидает корректного завершения цепочки печати. Если драйвер ККТ не успевает обработать XML-пакет или в нем содержатся недопустимые символы, система уходит в бесконечное ожидание ответа или выдает ошибку устройства.

Решение 1: Программная обработка недопустимых символов

Часто причиной ошибки при сверке итогов или закрытии чека является наличие спецсимволов в XML-пакете от Сбербанка. Мы можем внедрить «заглушку» в общий модуль, чтобы очистить строку перед отправкой на печать.

Для этого модифицируем ОбщийМодуль.ПодключаемоеОборудованиеУниверсальныйДрайверКлиент, вставив следующий код:


ИначеЕсли ПараметрыПодключения.ТипОборудования = \"ККТ\" Или ПараметрыПодключения.ТипОборудования = \"ПринтерЧеков\" Тогда
    // Костыль для исправления ошибки XML-пакета от терминала
    СтрокаТекста = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(СтрокаТекста, \"[отрезка]\");
    ДанныеЧека = МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляТекста(СтрокаТекста);

Решение 2: Настройка ожидания печати

Если ваша ККТ (например, линейка Штрих-М) печатает медленно, 1С может отправить команду на печать следующего документа раньше, чем завершится печать текущего. Чтобы избежать конфликта ресурсов, необходимо принудительно ожидать завершения печати в коде обработки.

Рекомендуется использовать метод WaitForPrinting при работе с DrvFR.dll. Это гарантирует, что кассовый аппарат полностью освободится от текущей задачи, прежде чем 1С начнет передавать данные фискального чека.

Решение 3: Аппаратная стабилизация и питание

Огромную роль играет качество физического подключения. Практика показывает, что использование USB-портов без дополнительного питания для моделей Verifone 805 и 820 является прямой причиной «отвалов» оборудования.

  1. Переподключите терминалы через USB-хабы с внешним блоком питания.
  2. Используйте качественные экранированные кабели.
  3. Если используете подключение через COM-порт, отдавайте предпочтение оригинальным чипсетам FTDI, избегая дешевых аналогов PL2303, которые часто сбоят под нагрузкой.

Решение 4: «Костыль» с виртуальным терминалом

Если все методы не приносят 100% результата, многие администраторы внедряют обходной путь для критических ситуаций:

Рекомендации по настройке драйверов

Проверьте содержимое файла pinpad.ini в папке драйверов Сбербанка. В некоторых случаях критически важно наличие или отсутствие параметра PrinterEnd=01. Также убедитесь, что вы используете актуальную версию библиотек (последняя актуальная версия ПО терминалов — 26). Если проблема повторяется на разных магазинах, имеет смысл обновить версию платформы 1С до 8.3.10 и выше, так как старые релизы корректно не обрабатывают новые XML-ответы от терминалов, адаптированных под карты «МИР».

Помните, что стабильность кассового узла зависит от чистоты операционной системы: на Windows 7 драйверы работают стабильнее, чем на Windows 8/10, за счет более предсказуемой работы с USB-эмуляцией COM-портов.

← На главную