В процессе розничной торговли часто возникает ситуация, когда при оплате картой банковский терминал (пин-пад) печатает свой слип-чек, а кассовый аппарат (фискальный регистратор) — свой. Это неудобно: кассиру приходится работать с двумя устройствами, тратить больше времени и путаться в бумажных лентах. Настроить печать обоих чеков через один фискальный регистратор (например, Атол или Штрих-М) в «1С:Управление торговлей 11.4» можно, но для этого потребуется скоординированная настройка как со стороны банковского ПО, так и внутри самой 1С.
Разберем подробно все шаги, которые необходимо выполнить, чтобы добиться результата «как в сетевых супермаркетах».
Первым делом мы должны понять, что именно инициирует печать слип-чека. Если в самом терминале (пин-паде) есть встроенный принтер и в его настройках указано «печатать на собственном устройстве», 1С не сможет перехватить этот поток данных без вмешательства инженера банка.
Проанализируем конфигурационные файлы банковского софта (обычно они находятся в папке C:\sc552 или C:\sberbank). Рассмотрим основные параметры в файле pinpad.ini или аналогичных настройках драйвера:
Важный момент: Если вы используете узкую кассовую ленту (57 мм), обязательно попросите инженера банка настроить ширину слипа (например, 32 символа в строке). Иначе при печати на ККТ текст будет «съезжать» или обрезаться.
После того как терминал «отдал» управление печатью программе, нам нужно указать 1С, что делать с полученными данными. Рассмотрим, где находятся нужные переключатели.
Выясним причину, почему иногда даже при правильных настройках печать не идет. При оплате картой происходит следующий алгоритм:
1. 1С отправляет команду на терминал через драйвер (например, SberbankCB.dll или SberBankExchange.dll).
2. Терминал проводит транзакцию и создает временный файл с образом чека (обычно файл p в папке банка).
3. 1С считывает этот файл. Если у пользователя нет прав на чтение/запись в папку банка, программа не увидит текст слипа и напечатает только фискальный чек.
4. 1С передает считанный текст драйверу ККТ методами печати нефискальных строк.
Посмотрим на пример того, как это выглядит на уровне кода (упрощенно), если бы мы анализировали работу драйвера через БПО (Библиотеку подключаемого оборудования):
// Получение строк слип-чека после успешной оплаты
Результат = ОбъектДрайвера.ОплатитьПлатежнойКартой(Сумма, ДанныеКарты, ...);
Если Результат Тогда
// Если флаг "Использовать терминал для печати" выключен
// 1С получает текст из выходного параметра слип-чека
ТекстСлипа = ОбъектДрайвера.СлипЧек;
// Печать строк на ККТ перед или после фискального чека
Для Каждого СтрокаСлипа Из ТекстСлипа Цикл
ДрайверККТ.НапечататьНефискальнуюСтроку(ОбъектККТ, СтрокаСлипа);
КонецЦикла;
КонецЕсли;
Многие пользователи хотят, чтобы слип был не отдельным куском ленты, а печатался внутри фискального документа (между товарным составом и итогом). В типовой 1С:УТ 11.4 «из коробки» это реализовано как последовательная печать: сначала закрывается фискальный чек, затем печатается нефискальный текст слипа. Между ними касса может сделать автоматический отрез (зависит от настроек драйвера ККТ).
Чтобы они печатались строго вместе без отреза, проанализируем настройки драйвера ККТ:
PrintText до вызова команды закрытия чека (EndDump / CloseCheck). Однако в типовой конфигурации рекомендуется использовать стандартный механизм, просто отключив автоматическую отрезку в драйвере кассы.Если при попытке настроить печать через ККТ вы видите пустые строки или иероглифы, обратите внимание на версию используемой библиотеки. Существует старая модель интеграции (через sbrf.dll) и более современная. Современная 1С:УТ 11.4 лучше всего работает с драйвером «Сбербанк: Эквайринговые терминалы», который использует COM-объект.
Проверьте параметры связи с банком. Иногда требуется обновить драйвер в самой 1С через Администрирование — Обновление драйверов оборудования. Новые версии БПО корректно обрабатывают массив строк слипа и передают их на ККТ с учетом ширины ленты.
C:\sc552).Следуя этим шагам, мы добьемся того, что касса будет выдавать один длинный чек, содержащий и информацию о товарах, и данные банковской транзакции, что значительно ускорит обслуживание покупателей.