Как реализовать печать суммы скидки в чеке на ККТ Вики Принт 80 Плюс в 1С:Розница

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

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

Почему скидки не печатаются «из коробки»

Проанализируем техническую сторону вопроса. Большинство современных ККТ, работающих по протоколу Пирит, при формировании фискального документа ожидают от учетной системы (1С) готовую цену за единицу товара. Согласно ФФД 1.05 и выше, реквизит «цена за единицу предмета расчета» (тег 1079) должен включать в себя все скидки и наценки. Если 1С попробует передать цену без скидки и отдельно сумму скидки, драйвер может проигнорировать эти данные или выдать ошибку расхождения итогов.

Разберем ситуацию с точки зрения драйверов Дримкас: они часто блокируют передачу тегов скидок, так как по закону они носят справочный характер и не влияют на фискальный итог. Выясним, какие пути обхода этого ограничения существуют для программиста и администратора 1С.

Решение 1: Настройка через сервисную утилиту Fito

Прежде чем приступать к изменению программного кода 1С, проверим внутренние настройки самой кассы. Многие параметры печати зашиты в памяти ККТ и управляются через утилиту Fito. Выполним следующие шаги:

  1. Подключим ККТ к компьютеру и запустим утилиту Fito.
  2. Перейдем в раздел «Установка параметров ККТ», затем выберем вкладку «Печать чека».
  3. Найдем флаги, отвечающие за детализацию позиций и вывод скидок. В некоторых версиях прошивок там присутствует пункт «Печатать скидки в чеке».
  4. Если флаг установлен, но скидки не выводятся, значит, драйвер 1С передает данные в упрощенном виде, и касса просто не «видит» информацию о скидках в структуре XML-пакета.

Решение 2: Использование шаблонов чеков в 1С

В современных версиях 1С:Розница (начиная с 2.2 и выше) управление внешним видом чека осуществляется через Шаблоны чеков ККМ. Рассмотрим, как можно отредактировать макет для вывода нужной информации:

  1. Перейдем в раздел «Продажи» — «Настройки РМК» — «Шаблоны чеков».
  2. Создадим новый шаблон или отредактируем существующий.
  3. В редакторе шаблона найдем доступные поля в правой колонке. Нас интересуют поля СуммаБезСкидки и СуммаСкидки.
  4. Добавим эти поля в строку состава чека.

Важный нюанс: Если вы используете «родной» драйвер от Дримкас, он может игнорировать эти поля в XML. В таком случае попробуйте переключиться на универсальный драйвер «1С:ККТ с передачей данных в ФН (версия 3.x)». Этот драйвер более гибко интерпретирует XML-шаблоны и может принудительно выводить дополнительные строки текста.

Решение 3: Программная доработка (вывод текстовых строк)

Если стандартные настройки не помогают, придется прибегнуть к модификации кода печати. Основная идея заключается в том, чтобы передать информацию о скидке в виде нефискального текста. Рассмотрим, как это реализовать в модуле МенеджерОборудованияВызовСервера или в обработке обслуживания ККТ.

Выясним причину, по которой обычная вставка текста может не работать: протокол Пирит требует строгой последовательности команд. Текст должен выводиться либо ДО регистрации позиции, либо ПОСЛЕ закрытия чека. Посмотрим на пример реализации логики печати текста перед строкой товара:


// Пример модификации цикла обхода строк чека
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    
    // Проверяем наличие скидки
    СуммаСкидки = СтрокаТЧ.ЦенаБезСкидки - СтрокаТЧ.Цена;
    
    Если СуммаСкидки > 0 Тогда
        // Формируем текстовую строку для печати
        ТекстСкидки = "Скидка на товар: " + Формат(СуммаСкидки, "ЧЦ=15; ЧДЦ=2");
        
        // Вызываем метод печати нефискального текста драйвера
        ПараметрыКоманды = Новый Структура;
        ПараметрыКоманды.Вставить("Text", ТекстСкидки);
        // Здесь вызывается метод PrintText согласно API вашего драйвера
        Результат = ОбъектДрайвера.PrintText(ПараметрыПодключения, ПараметрыКоманды);
    КонецЕсли;

    // Далее идет стандартная регистрация позиции по фискальной цене
    // ...
КонецЦикла;

Проанализируем этот подход: вы печатаете обычную текстовую строку, которая визуально располагается над товаром. Это не нарушает фискальное законодательство, так как итоговая сумма (которая уходит в ОФД и налоговую) остается корректной. Однако помните, что некоторые прошивки Вики Принт могут запрещать печать произвольного текста внутри открытого чека. В этом случае текст нужно выводить в «подвале» (footer) документа.

Решение 4: Печать дополнительного нефискального документа

Если клиент категорически требует подробный расчет (например, по бонусной программе или сложным акциям), а модификация фискального чека невозможна, рассмотрим вариант печати слип-чека. Это отдельный документ, который печатается сразу после фискального чека.

Разберем по шагам, как это работает:

  1. После успешного выполнения метода CloseCheck() (ЗакрытьЧек), программа инициирует новую операцию печати.
  2. Формируется текстовый блок со всеми подробностями: «Цена без скидки», «Ваша экономия», «Начислено бонусов» и т.д.
  3. Этот блок отправляется на ККТ как нефискальный документ.

Такой способ является самым безопасным с точки зрения налоговых проверок, так как вы никак не затрагиваете основной фискальный цикл. Для реализации используйте метод PrintNonFiscal() или аналогичный в зависимости от используемой библиотеки драйвера.

Законодательный аспект и ФФД

Важно помнить, что согласно форматам фискальных документов (ФФД 1.05, 1.1, 1.2), обязательным является только реквизит «цена за единицу предмета расчета с учетом скидок и наценок». Печать суммы самой скидки является справочной информацией. Поэтому ФНС не штрафует за отсутствие строки «Скидка» в чеке, равно как и за её наличие в виде текстового комментария. Главное условие — чтобы итоговая сумма к оплате в чеке совпадала с суммой всех зарегистрированных позиций.

Итоговые рекомендации

Подведем итог. Если вам необходимо вывести скидки на Вики Принт 80 Плюс:

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

← На главную