Ситуация, когда при оформлении продажи в 1С фискальный чек выходит полностью, а банковский слип-чек (квитанция об оплате картой) печатается «огрызком» без сумм и важных реквизитов, является довольно распространенной при интеграции с эквайрингом Сбербанка. Рассмотрим подробно, как диагностировать эту проблему и какие шаги предпринять для ее решения, опираясь на практический опыт технических специалистов.
Прежде чем приступать к настройкам оборудования, нам необходимо понять, на каком этапе происходит потеря информации. Процесс печати слип-чека в связке «1С — Банковский терминал — ККТ» выглядит следующим образом:
SberBankES.dll).p или e в папке банковского ПО).Разберем по шагам, как выявить слабое звено в этой цепи.
Первым делом нам нужно исключить вероятность того, что сама конфигурация 1С обрезает текст. Для этого проанализируем код в режиме отладчика. Нас интересует момент передачи данных драйверу ККТ. В большинстве типовых конфигураций (например, в «1С:Розница 1.0») за это отвечает функция НапечататьСтроки или вызов метода PrintText.
Проанализируем ситуацию: если при отладке мы видим, что в переменную, содержащую XML-пакет или массив строк для печати, попадает полный текст слип-чека (с суммами, номером карты и ID терминала), значит, проблема находится за пределами кода 1С — в драйвере принтера или самом устройстве.
Пример структуры, которая должна уходить на печать (в формате упрощенного XML):
// Примерный вид данных, передаваемых в драйвер
<Receipt>
<Line>СБЕРБАНК РОССИИ</Line>
<Line>ОПЛАТА: 1500.00</Line>
<Line>ОДОБРЕНО</Line>
<Line>........</Line>
</Receipt>
Если на этом этапе текст полный, переходим к следующему пункту.
Как показывает практика, наиболее частой причиной «обрезанных» чеков является некорректная работа драйвера фискального регистратора. Драйвер может неверно интерпретировать команды окончания документа или иметь внутренние ошибки при обработке длинных текстовых блоков.
Рассмотрим основное решение: необходимо обновить драйвер принтера чеков до актуальной версии. В рассматриваемом случае именно обновление драйвера ККТ помогло устранить проблему, когда текст в 1С был корректным, а на бумаге — нет.
Помимо обновления, проверим настройки в «Тесте драйвера»:
Если манипуляции с драйвером ККТ не принесли успеха, выясним причину в настройках самого банковского терминала. За формирование текста отвечает ПО Сбербанка (папка sc552 или аналогичная).
Проанализируем файл pinpad.ini. В нем могут содержаться важные параметры:
PrinterType — определяет, как терминал должен форматировать чек. Неверный тип принтера может приводить к тому, что строки будут слишком длинными и принтер их просто отбросит.PrintFile — путь к файлу, в который пишется образ чека.Также стоит проверить права доступа к папке с банковским ПО. Если у пользователя Windows ограничены права на изменение файлов в этой директории, 1С может считать «старую» версию файла или считать его не полностью, если процесс записи терминалом еще не завершен.
Современные драйверы (например, АТОЛ версии 10.х) позволяют печатать текст как графическое изображение или как встроенные шрифты принтера. Если слип-чек обрезается, попробуем переключить этот режим в настройках драйвера ККТ.
Разберем ситуацию: при графической печати драйвер формирует картинку каждой строки. Если памяти принтера недостаточно для хранения длинного графического объекта, печать может прерваться на середине. Переключение на использование встроенных шрифтов принтера (Text или Font) часто решает проблему со скоростью и полнотой печати нефискальных данных.
Иногда слип-чек содержит спецсимволы (например, знак №, кавычки или управляющие последовательности банковского ПО), которые драйвер принтера воспринимает как команду «Конец печати» или «Отрезать чек».
Выясним причину, изучив лог-файл драйвера ККТ. Если мы видим, что в логе выполнение метода печати прерывается с ошибкой на определенном символе, необходимо добавить в 1С обработку входящего текста для очистки от лишних символов:
ТекстСлипа = СтрЗаменить(ТекстСлипа, "<", "");
ТекстСлипа = СтрЗаменить(ТекстСлипа, ">", "");
ТекстСлипа = СтрЗаменить(ТекстСлипа, "&", " ");
Это особенно актуально для драйверов, использующих XML-пакеты, где символы «меньше» и «больше» являются зарезервированными и могут «сломать» структуру пакета данных.
Подводя итог, если вы столкнулись с обрезанным слип-чеком, следуйте данному алгоритму:
pinpad.ini, если подозрение падает на некорректное формирование файла слипа самим терминалом.Помните, что замена самого пин-пада (железа) редко помогает в таких случаях, так как проблема обычно кроется в программном «мостике» между банковским софтом и драйвером печатающего устройства.