При работе с торговым оборудованием часто возникает неприятная ситуация: в процессе оплаты картой через терминал Сбербанка кассовый аппарат (АТОЛ или Штрих-М) начинает печатать лишнюю бумагу. Это могут быть пустые чеки, дубликаты банковских слипов или ненужные отрезки ленты до и после фискального документа. В данной статье мы проанализируем причины такого поведения системы и разберем по шагам все способы устранения этой проблемы.
Если в вашем магазине установлены две идентичные кассы, но одна работает корректно, а другая выдает лишние чеки, логично предположить, что дело в программных настройках самой ККТ. Рассмотрим, как быстро перенести рабочую конфигурацию, предварительно создав резервные копии всех узлов с помощью программы для автоматического архивирования и обслуживания баз 1С.
Для этого воспользуемся Тестом драйвера АТОЛ (версии 10.х). Выполним следующие действия:
Этот метод позволяет исключить влияние специфических флагов в памяти кассы, таких как количество пустых строк после чека или параметры автоотрезки.
Часто проблема кроется не в 1С и не в кассе, а во взаимодействии терминала с программным обеспечением банка. Библиотеки Сбербанка имеют свои собственные инструкции по печати. Подобные нюансы могут возникнуть и на другом оборудовании, например, когда настраивается оплата по QR на терминале PAX D230. Проанализируем конфигурационный файл pinpad.ini. Для такой задачи можно использовать расширение для управления выбором способа оплаты на PAX D230.
Обычно этот файл находится в корневой папке ПО Сбербанка (например, C:\sc552\ или C:\sberbank\). Нам необходимо проверить следующие параметры:
0, печать идет через кассу (команды передает 1С). Если значение отличается, терминал может пытаться управлять печатью самостоятельно, что приводит к конфликту. Попробуем установить PrinterType=0.PrinterEndDelay=0. Это исключит ожидание, которое ККТ может ошибочно интерпретировать как команду на закрытие документа и отрезку ленты.В самой конфигурации 1С:Управление торговлей 11 существуют настройки, которые напрямую влияют на логику формирования чека.
Перейдем в раздел НСИ и администрирование -> РМК и оборудование -> Подключаемое оборудование. Откроем настройки нашего эквайрингового терминала. Выясним причину дублирования: при переходе на новую версию программы через перенос данных из УТ 10.3 в УТ 11 параметры оборудования в этом разделе требуют повторной проверки.
Найдем флаг Печатать слип-чек на фискальном регистраторе. Если этот флаг установлен, то 1С:УТ сама формирует текст слипа и отправляет его в кассу как текстовые строки. Если при этом в настройках самого банковского ПО включена опция «Печать чека на терминале», вы получите два слипа подряд. В таком случае нужно либо снять флаг в 1С, либо обратиться в поддержку банка для отключения печати на их стороне.
Современные кассы АТОЛ имеют встроенные механизмы управления ножом. Если 1С отправляет команду на печать слипа, а затем — команду на фискальный чек, касса может вставлять отрезку между ними автоматически. Иногда для корректного отображения операций требуется при оплате наличными пробивать безнал на уровне драйвера, что также влияет на процесс печати. Для автоматизации этой задачи подойдёт расширение для подмены вида оплаты на безналичную при печати чека.
Проанализируем настройки ККТ через Тест драйвера:
0, чтобы после чека не вылезал лишний хвост бумаги.Рассмотрим более сложный случай, когда лишняя отрезка происходит из-за специфической команды в коде 1С. В типовых конфигурациях при печати эквайринговых операций используется метод, который вставляет разделитель между банковским слипом и фискальной частью чека.
Этот разделитель часто описывается в XML-пакете, передаваемом на кассу, как PrintBoundary. Некоторые драйверы АТОЛ интерпретируют эту команду как «Полная отрезка». Чтобы это исправить, нам потребуется вмешательство в программный код через расширение. Посмотрим на пример логики, которую нужно скорректировать в модуле печати:
// В процедуре формирования XML для ККТ
// Находим место, где добавляется разделитель слип-чека
Если ПараметрыРегистрации.Свойство("ПечататьРазделитель") Тогда
// Вместо стандартного разделителя, который вызывает отрезку,
// используем простую печать строки из дефисов
ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "--------------------------------");
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
Замена объекта PrintBoundary на обычную текстовую строку TextString гарантирует, что касса не сработает ножом раньше времени, и весь чек (слип + фискальная часть) выйдет единой лентой.
Мы рассмотрели основные причины появления лишних чеков: от простых несовпадений в параметрах ККТ до программных особенностей взаимодействия 1С с библиотеками Сбербанка. Рекомендуется начинать с самого простого — сверки настроек pinpad.ini и флагов в Подключаемом оборудовании 1С. И только при отсутствии результата стоит переходить к редактированию шаблонов или кода системы.