При работе на упрощенной системе налогообложения (УСН) или патенте организации и индивидуальные предприниматели освобождены от уплаты НДС. Согласно требованиям Федерального закона № 54-ФЗ, в кассовых чеках для таких пользователей должна печататься ставка «Без НДС». Однако на практике пользователи ККТ АТОЛ часто сталкиваются с тем, что касса упорно выводит на чеке «НДС 0%».
С точки зрения налогового законодательства, «НДС 0%» и «Без НДС» — это абсолютно разные налоговые ставки. Неверное указание ставки в чеке может повлечь за собой штрафные санкции со стороны налоговых органов. Разберем подробно, почему возникает эта ошибка и как её исправить в программе «1С:Управление торговлей 11».
В типовых конфигурациях 1С при формировании чека для организации без НДС в XML-пакет передается текстовое значение ставки налогообложения none. Однако при попытке пробития чека на кассах АТОЛ со старой версией драйвера ККТ возникает критическая ошибка:
«При выполнении операции произошла ошибка: 'none' is not a valid integer value»
Эта ошибка указывает на то, что внешняя компонента 1С (библиотека связи с ККТ) пытается преобразовать строковое значение none в целое число (индекс налоговой ставки в ККТ), но не может этого сделать. В результате касса либо отказывается печатать чек, либо, если в кодовой базе оставлен старый механизм передачи числового нуля, печатает ставку «НДС 0%».
Для поддержки современных требований 1С по передаче строковых наименований ставок (таких как none) необходимо обновить внешнюю компоненту связи. Речь идет о библиотеке FprnM1C82_54FZ.dll (для драйверов АТОЛ семейства 8.х).
Выполним процедуру обновления по шагам:
FprnM1C82_54FZ.dll (версии не ниже 8.12.1.0, оптимально — 8.14.2.0 или новее). Её можно взять из обновленного релиза конфигурации 1С или дистрибутива драйвера торгового оборудования.C:\Windows\SysWOW64, для 32-разрядных — C:\Windows\System32.
regsvr32 C:\Windows\SysWOW64\FprnM1C82_54FZ.dll
Даже после успешного обновления библиотеки драйвера отправка ставки Tax="none" может приводить к аварийному завершению работы компоненты (ошибкам обращения к памяти типа Access violation). Это связано с тем, что новая библиотека требует обязательного указания номера секции (отдела) для каждого товарного ряда чека.
Проанализируем структуру отправляемого XML-пакета. Чтобы исправить ошибку, необходимо в позицию чека FiscalString добавить обязательный атрибут Department со значением номера секции (обычно это 1).
Пример некорректного XML-пакета, вызывающего ошибку драйвера:
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters PaymentType="1" TaxVariant="1" CustomerEmail="" CustomerPhone="+79000000000"/>
<Positions>
<FiscalString Name="Товар без НДС" Quantity="1" Price="100" Amount="100" Tax="none"/>
</Positions>
<Payments Cash="100" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>
Пример корректного XML-пакета с добавленным атрибутом Department, при котором чек успешно пробивается со ставкой «Без НДС»:
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters PaymentType="1" TaxVariant="1" CustomerEmail="" CustomerPhone="+79000000000"/>
<Positions>
<FiscalString Name="Товар без НДС" Quantity="1" Price="100" Amount="100" Department="1" Tax="none"/>
</Positions>
<Payments Cash="100" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>
В коде конфигурации в процедуре формирования XML перед отправкой пакета на ККТ убедитесь, что структура заполняется значением СтрокаПозицииЧека.Отдел = 1; (или соответствующим реквизитом секции).
Иногда внутренняя логика фискального накопителя и ККТ АТОЛ все равно подменяет ставку на основе внутренних таблиц налогов. Чтобы гарантировать правильное сопоставление, выполним настройку через утилиту производителя:
Если ручные правки кода нежелательны, решением проблемы станет обновление программы «1С:Управление торговлей» до актуального релиза. В современных версиях конфигурации сопоставление ставок НДС и налоговых групп ККТ вынесено в пользовательский интерфейс: