Проблема отображения скидок в кассовых чеках является одной из самых частых при настройке торгового оборудования. В случае с ККТ Вики Принт 80 Плюс ситуация осложняется тем, что производитель (Дримкас) ориентируется на строгие требования форматов фискальных данных (ФФД), где итоговая цена товара должна передаваться в ККТ уже с учетом всех примененных скидок. Однако покупателям важно видеть выгоду непосредственно в чеке. Рассмотрим подробно, как можно решить эту задачу в связке с 1С:Розница.
Проанализируем техническую сторону вопроса. Большинство современных ККТ, работающих по протоколу Пирит, при формировании фискального документа ожидают от учетной системы (1С) готовую цену за единицу товара. Согласно ФФД 1.05 и выше, реквизит «цена за единицу предмета расчета» (тег 1079) должен включать в себя все скидки и наценки. Если 1С попробует передать цену без скидки и отдельно сумму скидки, драйвер может проигнорировать эти данные или выдать ошибку расхождения итогов.
Разберем ситуацию с точки зрения драйверов Дримкас: они часто блокируют передачу тегов скидок, так как по закону они носят справочный характер и не влияют на фискальный итог. Выясним, какие пути обхода этого ограничения существуют для программиста и администратора 1С.
Прежде чем приступать к изменению программного кода 1С, проверим внутренние настройки самой кассы. Многие параметры печати зашиты в памяти ККТ и управляются через утилиту Fito. Выполним следующие шаги:
Fito.В современных версиях 1С:Розница (начиная с 2.2 и выше) управление внешним видом чека осуществляется через Шаблоны чеков ККМ. Рассмотрим, как можно отредактировать макет для вывода нужной информации:
СуммаБезСкидки и СуммаСкидки.Важный нюанс: Если вы используете «родной» драйвер от Дримкас, он может игнорировать эти поля в XML. В таком случае попробуйте переключиться на универсальный драйвер «1С:ККТ с передачей данных в ФН (версия 3.x)». Этот драйвер более гибко интерпретирует XML-шаблоны и может принудительно выводить дополнительные строки текста.
Если стандартные настройки не помогают, придется прибегнуть к модификации кода печати. Основная идея заключается в том, чтобы передать информацию о скидке в виде нефискального текста. Рассмотрим, как это реализовать в модуле МенеджерОборудованияВызовСервера или в обработке обслуживания ККТ.
Выясним причину, по которой обычная вставка текста может не работать: протокол Пирит требует строгой последовательности команд. Текст должен выводиться либо ДО регистрации позиции, либо ПОСЛЕ закрытия чека. Посмотрим на пример реализации логики печати текста перед строкой товара:
// Пример модификации цикла обхода строк чека
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
// Проверяем наличие скидки
СуммаСкидки = СтрокаТЧ.ЦенаБезСкидки - СтрокаТЧ.Цена;
Если СуммаСкидки > 0 Тогда
// Формируем текстовую строку для печати
ТекстСкидки = "Скидка на товар: " + Формат(СуммаСкидки, "ЧЦ=15; ЧДЦ=2");
// Вызываем метод печати нефискального текста драйвера
ПараметрыКоманды = Новый Структура;
ПараметрыКоманды.Вставить("Text", ТекстСкидки);
// Здесь вызывается метод PrintText согласно API вашего драйвера
Результат = ОбъектДрайвера.PrintText(ПараметрыПодключения, ПараметрыКоманды);
КонецЕсли;
// Далее идет стандартная регистрация позиции по фискальной цене
// ...
КонецЦикла;
Проанализируем этот подход: вы печатаете обычную текстовую строку, которая визуально располагается над товаром. Это не нарушает фискальное законодательство, так как итоговая сумма (которая уходит в ОФД и налоговую) остается корректной. Однако помните, что некоторые прошивки Вики Принт могут запрещать печать произвольного текста внутри открытого чека. В этом случае текст нужно выводить в «подвале» (footer) документа.
Если клиент категорически требует подробный расчет (например, по бонусной программе или сложным акциям), а модификация фискального чека невозможна, рассмотрим вариант печати слип-чека. Это отдельный документ, который печатается сразу после фискального чека.
Разберем по шагам, как это работает:
CloseCheck() (ЗакрытьЧек), программа инициирует новую операцию печати.Такой способ является самым безопасным с точки зрения налоговых проверок, так как вы никак не затрагиваете основной фискальный цикл. Для реализации используйте метод PrintNonFiscal() или аналогичный в зависимости от используемой библиотеки драйвера.
Важно помнить, что согласно форматам фискальных документов (ФФД 1.05, 1.1, 1.2), обязательным является только реквизит «цена за единицу предмета расчета с учетом скидок и наценок». Печать суммы самой скидки является справочной информацией. Поэтому ФНС не штрафует за отсутствие строки «Скидка» в чеке, равно как и за её наличие в виде текстового комментария. Главное условие — чтобы итоговая сумма к оплате в чеке совпадала с суммой всех зарегистрированных позиций.
Подведем итог. Если вам необходимо вывести скидки на Вики Принт 80 Плюс:
PrintText, стараясь размещать строки так, чтобы они не разрывали фискальный блок (в начале или в конце документа).Реализация печати скидок требует внимательности к деталям протокола работы оборудования, но при правильном подходе позволяет значительно повысить лояльность покупателей вашего аптечного пункта или магазина.