При оформлении продаж в программе 1С:Предприятие пользователи периодически сталкиваются с ситуацией, когда бумажный чек ККТ и данные, улетающие в ОФД, содержат некорректную информацию. Одна из распространенных проблем при работе с фискальными регистраторами семейства Штрих-М (например, Штрих-Сити-Ф, Штрих-М-01Ф) — это обнуление итоговой суммы без НДС (тег 1105) при продаже товаров, не облагаемых этим налогом.
В этой статье мы подробно разберем, почему возникает этот конфликт интеграции на стыке 1С и драйверов ККТ, проанализируем техническую сторону проблемы и рассмотрим все доступные варианты ее решения.
Представим стандартный бизнес-процесс: организация находится на общей системе налогообложения (ОСНО), но реализует часть товаров или услуг, которые освобождены от уплаты НДС (ставка «Без НДС»). При оформлении продажи из документа Поступление наличных или Реализация в 1С формируется чек.
В окне предварительного просмотра (пречека) в 1С все реквизиты отображаются корректно: зафиксирована верная сумма товара, указан признак «Без НДС». Однако после того как чек физически пробивается на кассе, обнаруживается следующее:
Такое расхождение приводит к возникновению ошибки форматно-логического контроля (ФЛК 532) в личном кабинете ОФД: «Сумма расчета по чеку без НДС (тег 1105) отличается от суммы предметов расчета по ставке 'Без НДС'». Налоговые органы видят данное несоответствие, что может стать причиной получения официального предупреждения или штрафа за нарушение правил применения ККТ.
Выясним причину, почему при работе через 1С данные передаются некорректно, а через тест драйвера все работает штатно. Для этого проанализируем структуру XML-пакета, который 1С отправляет на кассовый аппарат через механизм Библиотеки подключаемого оборудования (БПО).
В процессе обмена 1С формирует XML-структуру чека CheckPackage. Посмотрим на пример некорректного формирования параметров XML-команды:
{
"type": "sell",
"taxationType": "osn",
"items": [
{
"type": "position",
"name": "Товар без НДС",
"price": 1000,
"quantity": 1,
"amount": 1000,
"tax": {
"type": "none"
}
}
]
}
В логах обмена с ККТ при передаче данных от 1С можно увидеть следующую картину:
VATRate=none, VATAmount=0
В чем заключается конфликт:
VATRate="none"), атрибут VATAmount (сумма НДС) вообще не должен добавляться в структуру документа.VATRate="none" совместно с VATAmount="0".VATAmount="0" для безналоговой позиции, парсер драйвера кассы интерпретирует это как то, что оборот без НДС равен нулю. Из-за этого итоговый тег 1105 («СУММА БЕЗ НДС») при закрытии чека не увеличивается на сумму проданного товара и остается нулевым.Рассмотрим подробнее способы устранения этой ошибки, начиная от простых настроек оборудования и заканчивая программными корректировками.
Это самый надежный и правильный метод решения проблемы. В старых версиях прошивок «Штрих-М» этот баг обработки XML-пакетов присутствовал постоянно. Разработчики ККТ оперативно отреагировали на проблему и доработали внутреннее ПО ККТ (на базе Единого Кассового Ядра — ЕКЯ).
Актуальные версии прошивок автоматически игнорируют избыточный параметр VATAmount="0", если в строке указана ставка none. Касса самостоятельно корректно суммирует позиции и записывает верное значение в тег 1105. Рекомендуется обратиться к обслуживающему вас партнеру ККТ (АСЦ) для обновления прошивки фискального регистратора до актуальной версии.
Часто сбой удается нивелировать путем обновления драйвера ККТ. Если на вашем компьютере установлена устаревшая версия драйвера (например, из ветки 4.15), выполните следующие действия:
Если быстро обновить прошивку ККТ нет возможности, можно скорректировать внутренние настройки таблиц кассового аппарата через стандартную утилиту производителя.
Внимание: данный способ требует осторожности и предварительного снятия Z-отчета.
1 (налоги рассчитываются верхним ПО, то есть самой 1С).-1 или пустое поле для корректного маппинга ставки none из 1С).Если вы используете локальную версию программы (не облачную 1С:Фреш), или у вас есть возможность использовать расширения конфигурации, проблему можно решить непосредственно в коде БПО.
Для этого программисту необходимо скорректировать модуль интеграции с кассовым оборудованием, отвечающий за формирование XML-пакета CheckPackage. Задача состоит в том, чтобы принудительно удалять атрибут VATAmount, если ставка налога определена как none.
Пример программного кода в общем модуле интеграции с ККТ, который решает эту проблему:
// Перед формированием строки XML проверяем ставку НДС
Если ТекущаяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
// Исключаем выгрузку тега VATAmount для безналоговых позиций
Если СтруктураПозиции.Свойство("VATAmount") Тогда
СтруктураПозиции.Удалить("VATAmount");
КонецЕсли;
КонецЕсли;
Использование этого кода гарантирует, что на кассу уйдет «чистый» XML-пакет, соответствующий стандартам ККТ Штрих-М.
Поскольку чеки с нулевым тегом 1105 уже ушли в ФНС с предупреждением ФЛК, оставлять их без внимания не стоит. Чтобы обезопасить организацию от возможных штрафных санкций за нарушение кассовой дисциплины, рекомендуется выполнить следующие действия:
Мы проанализировали причины сбоя при выводе суммы без НДС в чеках ККТ Штрих-М при работе из 1С. Своевременное обновление кассового софта и прошивки оборудования позволит вам избежать ошибок контроля ФЛК и предупредить возможные претензии со стороны налоговых органов. Для массового исправления ставок налога в уже пробитых документах можно использовать обработку для пакетного формирования чеков коррекции.