При оформлении розничных продаж через операционную кассу пользователи часто сталкиваются с эстетическими и формальными несовершенствами печатных форм чеков. Одной из наиболее раздражающих проблем является появление строки «Надбавка» (даже с нулевым значением) в фискальном документе. Покупатели недоумевают, почему к стоимости товаров применяется какая-то наценка, а бухгалтерия и кассиры требуют от программистов 1С немедленно убрать эту строку из чека.
В этой статье мы подробно разберем, почему возникает данная проблема на ККТ АТОЛ (в частности, на популярных моделях вроде АТОЛ 77Ф), и рассмотрим эффективные методы ее устранения как на стороне кода 1С, так и через низкоуровневые настройки самой кассы.
Для того чтобы решить проблему, нам необходимо проанализировать логику взаимодействия учетной системы 1С и программного обеспечения ККТ. Процесс печати чека выглядит следующим образом: 1С формирует XML-пакет с фискальными позициями и отправляет его драйверу кассы. Драйвер, в свою очередь, транслирует эти данные в ККТ.
Появление строки «Надбавка» (или «Скидка») чаще всего обусловлено двумя факторами:
Количество * Цена = Сумма. В 1С из-за сложных алгоритмов распределения скидок (например, скидки на чек, дисконтные карты, округление копеек) цена за единицу товара может содержать три и более знаков после запятой, но в XML-пакет передаются округленные до двух знаков значения. Если произведение переданной цены на количество хотя бы на долю копейки не совпадает с итоговой суммой позиции, драйвер АТОЛ пытается сбалансировать это расхождение. Он регистрирует разницу как «Скидку» (если сумма меньше ожидаемой) или как «Надбавку» (если сумма больше).DiscountSum="") или нулевыми (Markup="0"), драйвер воспринимает сам факт наличия тега как команду вывести соответствующую область на печать.Рассмотрим структуру «проблемного» XML-пакета старого формата, который отправляется в кассу:
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters PaymentType="2" TaxVariant="0" CashierName="Петрова Анна Петровна" CustomerEmail="" CustomerPhone=""/>
<Positions>
<FiscalString Name="Товар 1" Quantity="3" Price="22.5" Amount="67.5" Department="0" Tax="10"/>
<FiscalString Name="Товар 2" Quantity="2" Price="22.5" Amount="45" Department="0" Tax="10"/>
</Positions>
<Payments Cash="112.5" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>
Давайте разберем по шагам, какими способами мы можем гарантированно избавиться от лишней строки в чеке.
---
Если у вас нет возможности оперативно вносить изменения в программный код 1С или обновлять конфигурацию, проблему можно решить на уровне аппаратных настроек кассового аппарата. Мы можем физически запретить ККТ обрабатывать и печатать операции начисления надбавок.
Для этого выполните следующие действия:
0 - Запрещены (если расчет всех скидок у вас полностью происходит на стороне 1С, и в кассу передается уже готовая конечная цена).0 - Запрещены.После этой несложной операции ККТ АТОЛ на аппаратном уровне перестанет выводить на чековую ленту строки начислений, даже если драйвер попытается их передать.
---
В старых конфигурациях 1С (таких как «Управление торговлей 10.3», «Комплексная автоматизация 1.1» или «Управление производственным предприятием 1.1») часто используются устаревшие обработки обслуживания торгового оборудования. Они передают данные в кассу без предварительного жесткого сопоставления математических долей копеек.
Проанализируем ситуацию на стороне 1С. Чтобы исключить копеечные расхождения, которые провоцируют появление «Надбавки», необходимо включить внутренний контроль расхождений:
0.01 (одна копейка). Это заставит систему принудительно корректировать копейки в пользу покупателя или округлять математические показатели до отправки XML, чтобы избежать расхождений между ценой, количеством и суммой.---
Если вы до сих пор используете старые версии интеграционных компонент (например, API версии 2.05 и обработку обслуживания ККТ версии 2.3), пришло время выполнить глобальное обновление. Формат ФФД 1.0 давно ушел в прошлое, а современные форматы (ФФД 1.05, 1.1, 1.2) диктуют совершенно иные правила работы со скидками.
В современных стандартах фискализации понятия «скидка на чек» или «надбавка на весь чек» юридически упразднены. Каждая скидка должна быть распределена по позициям номенклатуры еще до момента отправки данных в кассу. Каждая позиция в XML-пакете должна содержать строго конечную цену.
Рекомендуем выполнить следующие шаги по обновлению программного контура:
PriceWithDiscount (цена с учетом скидки) и итоговая сумма SumWithDiscount:
<Positions>
<FiscalString Name="Товар такой-то..." Quantity="1" PriceWithDiscount="100" SumWithDiscount="100" DiscountSum="" Department="0" Tax="18" SignMethodCalculation="4" SignCalculationObject="4" TaxSum=""/>
</Positions>
Обратите внимание: если скидка или наценка на позицию равны нулю, старайтесь полностью исключать атрибуты DiscountSum, DiscountAmount или Markup из XML-структуры на этапе формирования пакета в коде 1С, а не передавать их с пустыми значениями "".
---
Если отключение надбавок в параметрах драйвера не помогло (например, из-за специфической версии прошивки кассы), можно изменить сам шаблон вывода информации на чековую ленту. В ККТ АТОЛ встроено несколько преднастроенных шаблонов:
Чтобы сменить шаблон печати:
2 (или выберите вариант «Компактный» из выпадающего списка).Применяя данные методы в комплексе — настроив округление копеек в 1С, обновив интеграционные компоненты до актуальных версий ФФД и отключив печать нулевых надбавок в параметрах драйвера ККТ АТОЛ, — вы навсегда избавитесь от некорректных строк в чеках и снимете лишние вопросы со стороны покупателей и контролирующих органов.