При работе с торговым оборудованием под управлением 1С:Розница часто возникает ситуация, когда в интерфейсе РМК (Рабочего места кассира) скидка отображается корректно, а в бумажном чеке, выдаваемом покупателю, печатается только итоговая цена. Для клиента это выглядит так, будто он купил товар по полной стоимости, что вызывает вопросы и недовольство. Особенно остро эта проблема встала с переходом на формат фискальных данных ФФД 1.2.
В этой статье мы подробно разберем, почему скидка пропадает на этапе печати и как настроить программный комплекс 1С и драйвер ККТ Штрих-М, чтобы информация о скидках стала доступна покупателю. Мы проанализируем технические параметры драйвера, структуру XML-пакета, передаваемого кассе, и настройки шаблонов чеков внутри 1С.
Прежде чем менять настройки, нам необходимо убедиться, что сама программа 1С передает данные о скидке в драйвер кассового аппарата. Для этого проанализируем XML-пакет, который формируется при пробитии чека. Посмотрим на пример фискальной строки, которую 1С отправляет на ККТ:
<Positions>
<FiscalString Name="Пакет подарочный маленький в асс."
Quantity="1"
PriceWithDiscount="40"
AmountWithDiscount="40"
DiscountAmount="10"
Department="1"
VATRate="none"
VATAmount="0"
PaymentMethod="4"
CalculationSubject="1"
MeasureOfQuantity="0">
<GoodCodeData EAN13="NjkwMDA0MjYyMjkwOA=="/>
</FiscalString>
</Positions>
В данном примере мы видим атрибут DiscountAmount="10". Это означает, что 1С честно сообщает кассе: "Товар стоит 40 рублей, но в эту цену уже включена скидка 10 рублей". Если этот атрибут присутствует в логах драйвера, значит, проблема кроется исключительно в настройках печатающего устройства или в алгоритме обработки данных самим драйвером.
Многие системные администраторы пытаются решить проблему через "Тест драйвера ККТ", меняя значение в Таблице 17, поле 3 (Печать скидок). Однако часто после перезагрузки кассы или открытия новой смены настройки сбрасываются. Выясним причину: 1С при инициализации оборудования принудительно перезаписывает настройки драйвера своими внутренними параметрами.
Чтобы изменения стали постоянными, выполним следующие шаги в интерфейсе 1С:
Если настройки драйвера верны, но скидка всё равно не выводится, нам нужно проверить, какой Шаблон чека используется в программе. В 1С:Розница существует два основных подхода к формированию чека:
Рассмотрим настройку программного шаблона, так как он дает больше гибкости:
СуммаБезСкидки и Скидка. Если их нет, перетащим их из списка доступных полей слева.Важный нюанс: В режиме ФФД 1.2 по закону 54-ФЗ в фискальный признак чека всегда должна попадать цена с уже учтенной скидкой. Поэтому строка "Скидка" в чеке чаще всего является чисто информационным (нефискальным) текстом. Если в настройках драйвера ККТ запрещена "Печать нефискальной информации", касса просто проигнорирует эти строки от 1С.
Проанализируем специфику оборудования Штрих-Лайт 01. Для корректной работы со скидками в современных условиях рекомендуется использовать драйвер версии не ниже 5.16. В более ранних версиях наблюдались ошибки при обработке тега DiscountAmount в режиме ФФД 1.2.
Также стоит проверить настройку "Печать только фискальных операций" в драйвере. Если этот флаг установлен, касса будет отсекать любую информацию, которую 1С пытается вывести методом PrintString (печать строки) между позициями чека. Рассмотрим, как это исправить:
Иногда касса отказывается печатать скидку из-за конфликта округлений. Рассмотрим ситуацию: 1С рассчитала скидку так, что цена за единицу стала иметь более двух знаков после запятой, но в XML передала округленное значение. Если AmountWithDiscount не совпадает с (Price * Quantity) - DiscountAmount, касса может "выбросить" блок скидки, чтобы чек остался математически верным и прошел фискализацию.
Для решения этой проблемы выясним, включено ли округление на стороне 1С. Рекомендуется настраивать округление в 1С таким образом, чтобы итоговая сумма чека всегда была кратна копейке (или рублю, если так принято в магазине), и отключать внутренние механизмы округления в самом драйвере ККТ, чтобы они не конфликтовали с логикой 1С.
Для того чтобы клиент увидел заветную строку со скидкой, мы должны действовать комплексно: Во-первых, убедиться, что 1С передает данные о скидке в XML. Во-вторых, настроить шаблон чека в 1С, добавив туда соответствующие поля. В-третьих, проверить настройки оборудования в самой 1С (а не только в драйвере), чтобы программа не затирала наши правки в таблицах ККТ. И, в-четвертых, убедиться, что прошивка кассы и версия драйвера актуальны для работы с протоколом ФФД 1.2.
Соблюдение этих шагов позволит сделать процесс покупки прозрачным для потребителя и избежать лишних вопросов на кассовой зоне.