Почему слип-чек печатается обрезанным и как это исправить?

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

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

Анализируем цепочку передачи данных

Прежде чем приступать к настройкам оборудования, нам необходимо понять, на каком этапе происходит потеря информации. Процесс печати слип-чека в связке «1С — Банковский терминал — ККТ» выглядит следующим образом:

  1. 1С инициирует оплату через внешнюю компоненту (например, SberBankES.dll).
  2. Пин-пад проводит транзакцию и формирует текстовый образ чека.
  3. Текст слипа сохраняется в промежуточный файл (обычно это файл p или e в папке банковского ПО).
  4. 1С считывает этот файл и передает его строки в драйвер ККТ через соответствующий метод печати нефискального документа.
  5. Драйвер ККТ интерпретирует эти строки и отправляет команды на печатающую головку принтера.

Разберем по шагам, как выявить слабое звено в этой цепи.

Шаг 1. Программная диагностика через отладку 1С

Первым делом нам нужно исключить вероятность того, что сама конфигурация 1С обрезает текст. Для этого проанализируем код в режиме отладчика. Нас интересует момент передачи данных драйверу ККТ. В большинстве типовых конфигураций (например, в «1С:Розница 1.0») за это отвечает функция НапечататьСтроки или вызов метода PrintText.

Проанализируем ситуацию: если при отладке мы видим, что в переменную, содержащую XML-пакет или массив строк для печати, попадает полный текст слип-чека (с суммами, номером карты и ID терминала), значит, проблема находится за пределами кода 1С — в драйвере принтера или самом устройстве.

Пример структуры, которая должна уходить на печать (в формате упрощенного XML):


// Примерный вид данных, передаваемых в драйвер
<Receipt>
    <Line>СБЕРБАНК РОССИИ</Line>
    <Line>ОПЛАТА: 1500.00</Line>
    <Line>ОДОБРЕНО</Line>
    <Line>........</Line>
</Receipt>

Если на этом этапе текст полный, переходим к следующему пункту.

Шаг 2. Обновление и настройка драйвера ККТ

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

Рассмотрим основное решение: необходимо обновить драйвер принтера чеков до актуальной версии. В рассматриваемом случае именно обновление драйвера ККТ помогло устранить проблему, когда текст в 1С был корректным, а на бумаге — нет.

Помимо обновления, проверим настройки в «Тесте драйвера»:

Шаг 3. Конфигурация банковского ПО (Sberbank Pilot)

Если манипуляции с драйвером ККТ не принесли успеха, выясним причину в настройках самого банковского терминала. За формирование текста отвечает ПО Сбербанка (папка sc552 или аналогичная).

Проанализируем файл pinpad.ini. В нем могут содержаться важные параметры:

Также стоит проверить права доступа к папке с банковским ПО. Если у пользователя Windows ограничены права на изменение файлов в этой директории, 1С может считать «старую» версию файла или считать его не полностью, если процесс записи терминалом еще не завершен.

Шаг 4. Режим печати: Текст против Графики

Современные драйверы (например, АТОЛ версии 10.х) позволяют печатать текст как графическое изображение или как встроенные шрифты принтера. Если слип-чек обрезается, попробуем переключить этот режим в настройках драйвера ККТ.

Разберем ситуацию: при графической печати драйвер формирует картинку каждой строки. Если памяти принтера недостаточно для хранения длинного графического объекта, печать может прерваться на середине. Переключение на использование встроенных шрифтов принтера (Text или Font) часто решает проблему со скоростью и полнотой печати нефискальных данных.

Шаг 5. Особенности символов и кодировки

Иногда слип-чек содержит спецсимволы (например, знак №, кавычки или управляющие последовательности банковского ПО), которые драйвер принтера воспринимает как команду «Конец печати» или «Отрезать чек».

Выясним причину, изучив лог-файл драйвера ККТ. Если мы видим, что в логе выполнение метода печати прерывается с ошибкой на определенном символе, необходимо добавить в 1С обработку входящего текста для очистки от лишних символов:


ТекстСлипа = СтрЗаменить(ТекстСлипа, "<", "");
ТекстСлипа = СтрЗаменить(ТекстСлипа, ">", "");
ТекстСлипа = СтрЗаменить(ТекстСлипа, "&", " ");

Это особенно актуально для драйверов, использующих XML-пакеты, где символы «меньше» и «больше» являются зарезервированными и могут «сломать» структуру пакета данных.

Резюме и рекомендации

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

  1. Проверьте отладчиком, какой текст 1С отправляет в драйвер. Если текст полный — 1С не виновата.
  2. Обновите драйвер ККТ до последней стабильной версии. Это решает 90% подобных проблем.
  3. Проверьте физические настройки промотки в драйвере. Возможно, чек просто не выезжает до конца.
  4. Свяжитесь с инженером банка для проверки настроек в pinpad.ini, если подозрение падает на некорректное формирование файла слипа самим терминалом.

Помните, что замена самого пин-пада (железа) редко помогает в таких случаях, так как проблема обычно кроется в программном «мостике» между банковским софтом и драйвером печатающего устройства.

← На главную