Как в чеке драйвера АТОЛ по 54-ФЗ вывести фискальную строку Без НДС вместо НДС 0%

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

При интеграции кассовой техники АТОЛ с конфигурациями 1С по требованиям 54-ФЗ разработчики нередко сталкиваются с ситуацией, когда необлагаемые налогом позиции (например, реализация программного обеспечения без НДС по ст. 149 НК РФ или услуги на спецрежимах) печатаются в чеке со ставкой НДС 0% вместо обязательной формулировки Без НДС.

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

В чем разница между ставками Без НДС и НДС 0%

С точки зрения математического расчета налога сумма в обоих случаях равна нулю, однако с точки зрения налогового учета и форматов фискальных данных (ФФД) последствия различаются кардинально:

  1. НДС 0% — операция подлежит обложению налогом на добавленную стоимость, организация является плательщиком НДС, но применяет специальную льготную ставку (например, при экспорте товаров). Применение данной ставки требует подтверждения и отражения в соответствующем разделе декларации по НДС.
  2. Без НДС — операция полностью освобождена от обложения НДС (ст. 145, 149 НК РФ), либо продавец применяет специальный налоговый режим (УСН, Патент).

Если организация на общей системе налогообложения реализует необлагаемую продукцию и выбивает в чеке ставку 0%, с точки зрения налоговых органов это трактуется как ошибка фискализации и неправомерное применение ставки, что ведет к требованию пояснений и доначислениям.

Причина возникновения проблемы в коде и драйвере

Проанализируем механизм передачи параметров в компоненту интеграции (например, AddIn.ATOL_KKM_1C82_54FZ или библиотеку FprnM1C82_54FZ.dll). В ранних версиях стандарта интеграции БПО (Библиотеки подключаемого оборудования) ставка налога передавалась в виде целочисленного значения:

СтрокаПозицииЧека.Вставить("СтавкаНДС", 0);

Поскольку числовой эквивалент для ставки 0% и признака Без НДС одинаков (число 0), драйвер не мог однозначно определить намерение учетной системы. На ОСНО драйвер по умолчанию транслировал ноль как фискальный тег 1199 со ставкой «НДС 0%».

Способ 1. Обновление БПО и драйвера ККТ АТОЛ (штатный способ)

Фирма 1С совместно с производителями кассовой техники переработала требования к драйверам и формат XML-пакета фискализации чека. В современных стандартах БПО ставка НДС передается не числом, а строковым идентификатором.

Рассмотрим соответствие строковых кодов ставкам налога:

  1. "none" — Без НДС;
  2. "vat0" или "0" — ставка НДС 0%;
  3. "vat10" / "vat20" — ставки 10% и 20%;
  4. "vat110" / "vat120" — расчетные ставки 10/110 и 20/120.

Для устранения проблемы рекомендуется обновить конфигурацию 1С (или отдельно подсистему БПО) до актуальной версии и установить современный драйвер ККТ АТОЛ (ДТО 10.х). В этом случае 1С автоматически передаст строковый признак none в фискальный пакет.

Способ 2. Корректировка формирования XML-пакета чека

Если конфигурация снята с поддержки или оперативно обновить БПО невозможно, скорректируем модуль формирования XML-пакета фискализации чека вручную. Найдем место заполнения данных фискальной строки и убедимся, что для необлагаемых позиций передается строковый тег.

Посмотрим на пример адаптации кода формирования пакета:


Если СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
    СтрокаПозицииЧека.Вставить("СтавкаНДС", "none");
ИначеЕсли СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
    СтрокаПозицииЧека.Вставить("СтавкаНДС", "vat0");
ИначеЕсли СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
    СтрокаПозицииЧека.Вставить("СтавкаНДС", "vat20");
ИначеЕсли СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
    СтрокаПозицииЧека.Вставить("СтавкаНДС", "vat10");
КонецЕсли;

При передаче строкового идентификатора драйвер корректно сопоставляет операцию с тегом ФФД 1199 со значением «Без НДС» и выводит правильный текст в печатную форму и электронный чек для ОФД.

Способ 3. Прямая работа с объектом драйвера ККТ

Если печать чека реализована через прямое обращение к методам драйвера ККТ (низкоуровневый протокол), ставка налога задается через специальное свойство объекта драйвера.

Разберем пример передачи параметров налога через объект драйвера:


// Для драйверов АТОЛ старых ревизий:
// 1 - НДС 0%, 2 - НДС 10%, 3 - НДС 18%/20%, 4 - Без НДС
ДрайверККМ.НомерНалога = 4; 

// Для драйверов АТОЛ ДТО 10 (через константы интерфейса):
ДрайверККМ.setParam(ДрайверККМ.LIBFPTR_PARAM_TAX_TYPE, ДрайверККМ.LIBFPTR_TAX_NO);
ДрайверККМ.registration();

Особенности совмещения нескольких систем налогообложения

Выясним частую причину путаницы со ставками налога при совмещении режимов (например, ОСНО + Патент):

  1. Несколько СНО в одном чеке запрещены: согласно форматам фискальных документов (тег 1055 «Система налогообложения»), весь фискальный чек может быть пробит строго по одной системе налогообложения. Пробить в одном чеке часть позиций по ОСНО, а часть по Патенту технически невозможно. В учетной системе такие продажи должны разбиваться на два независимых фискальных документа.
  2. Смешанные ставки в рамках одной СНО разрешены: на общей системе налогообложения (ОСНО) допустимо иметь в одном чеке позиции с НДС 20% и позиции «Без НДС». Для этого касса должна быть зарегистрирована с поддержкой ОСНО, а программа обязана передавать для необлагаемых товаров идентификатор none.
← На главную