Почему возникает ошибка «Указан неверный НДС» при печати чека из ПКО и как её исправить?

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

При работе в конфигурации 1С:Розница пользователи нередко сталкиваются с ситуацией: чек на фискальном регистраторе (онлайн-кассе) без проблем пробивается через рабочее место кассира (РМК), однако при попытке пробить чек из документа Приходный кассовый ордер (ПКО) фискализация прерывается с ошибкой: При выполнении операции произошла ошибка: Указан неверный НДС.

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

Анализ причин возникновения ошибки

Для понимания корня проблемы проанализируем различия в формировании чека из РМК и из документа взаиморасчетов (ПКО):

  1. Несоответствие ставки НДС признаку способа расчета: когда кассир пробивает чек в РМК, оформляется операция с признаком способа расчета «Полный расчет» (тег 1214) с передачей прямой ставки НДС (например, 18% или 20%). Когда ПКО создается на основании документа Заказ покупателя до фактической отгрузки товаров, операция классифицируется кассовым аппаратом как «Аванс» или «Предоплата». Согласно форматам фискальных данных (ФФД 1.05 и выше), для авансовых платежей кассовый аппарат требует указания исключительно расчетных ставок НДС (18/118, 20/120, 10/110 — тег 1199). Если 1С передает прямую ставку, драйвер ККТ блокирует операцию с ошибкой некорректного налога.
  2. Несовпадение таблицы налогов в драйвере ККТ: фискальный накопитель и прошивка кассы ориентируются на номера налоговых секций (от 1 до 6). Если в таблице налогов драйвера ККТ номера расчетных ставок смещены или не соответствуют настройкам в 1С, фискализация чека из ПКО завершается сбоем.
  3. Смешанные ставки НДС в заказе: если в документе-основании присутствуют товары с разными ставками НДС, а ПКО отражает расчет на общую сумму без товарного состава, алгоритм формирования XML-пакета чека не может корректно выделить единую ставку налога.

Способ 1. Проверка и анализ формируемого XML-пакета фискализации

Чтобы точно определить, какие данные программа передает в драйвер ККТ, перехватим и проанализируем XML-пакет чека. Для этого обратимся к общему модулю формирования фискальных данных.

Формирование данных для кассы происходит в функции МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляФискализацияЧека. Посмотрим, как можно сохранить сформированный пакет в файл для анализа:


// Пример перехвата XML-пакета чека для отладки
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\temp\FiscalCheck.xml", "UTF-8");
ЗаписьXML.ЗаписатьСыройXML(XMLПакет);
ЗаписьXML.Закрыть();

Также проанализируем логи драйвера торгового оборудования (например, для ККТ АТОЛ логи располагаются по пути C:\Users\<ИмяПользователя>\AppData\Roaming\ATOL\DRIVERS\). В логах будет четко зафиксировано, какое именно значение тега VATRate или номера налога было отклонено кассой.

Способ 2. Изменение последовательности оформления документов (обходной путь)

Если требуется оперативно пробить чек без внесения изменений в конфигурацию и драйвер, применим изменение регламента оформления документов:

  1. Оформим документ Реализация товаров на основании заказа покупателя.
  2. Введем документ Приходный кассовый ордер на основании созданной реализации, а не на основании заказа.
  3. Нажмем кнопку печати чека из ПКО.

В этом случае признак способа расчета определится как «Полный расчет» или «Оплата кредита», для которых применяется прямая ставка НДС, и фискальный регистратор напечатает чек без ошибок.

Способ 3. Программная корректировка формирования чека из ПКО

Если на предприятии обязательно требуется прием авансов по заказам через ПКО, внесем исправление в алгоритм подготовки данных чека через механизм расширений конфигурации. Проверим, как обрабатывается ставка НДС в зависимости от типа расчета:


// Корректировка ставки НДС для авансовых платежей
Если СпособРасчета = Перечисления.ПризнакиСпособаРасчета.Аванс 
    ИЛИ СпособРасчета = Перечисления.ПризнакиСпособаРасчета.Предоплата Тогда
    
    Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
        СтавкаНДСДляЧека = "vat120"; // Расчетная ставка 20/120
    ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
        СтавкаНДСДляЧека = "vat118"; // Расчетная ставка 18/118
    ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
        СтавкаНДСДляЧека = "vat110"; // Расчетная ставка 10/110
    КонецЕсли;
КонецЕсли;

Также убедимся, что в справочнике ВидыНоменклатуры для используемых позиций корректно заполнен реквизит ТипПризнакаПредметаРасчета (должно быть указано значение Товар или Услуга).

Способ 4. Проверка таблицы соответствия налогов в драйвере ККТ

Проверим настройки соответствия ставок налога в тесте драйвера фискального регистратора:

  1. Откроем утилиту Тест драйвера ККТ (при закрытой базе 1С).
  2. Перейдем в раздел Параметры ККТ -> Налоги (или Налоговые ставки).
  3. Сверим соответствие номеров налогов (СНО и НДС) ставкам, заданным в 1С (включая расчетные ставки 18/118 и 20/120).
  4. При наличии расхождений скорректируем привязку номеров ставок и сохраним параметры в память ККТ.
← На главную