При работе в конфигурации 1С:Розница пользователи нередко сталкиваются с ситуацией: чек на фискальном регистраторе (онлайн-кассе) без проблем пробивается через рабочее место кассира (РМК), однако при попытке пробить чек из документа Приходный кассовый ордер (ПКО) фискализация прерывается с ошибкой: При выполнении операции произошла ошибка: Указан неверный НДС.
Разберем по шагам, почему возникает такое поведение системы, как формируются фискальные данные и какими способами можно устранить эту проблему.
Для понимания корня проблемы проанализируем различия в формировании чека из РМК и из документа взаиморасчетов (ПКО):
Заказ покупателя до фактической отгрузки товаров, операция классифицируется кассовым аппаратом как «Аванс» или «Предоплата». Согласно форматам фискальных данных (ФФД 1.05 и выше), для авансовых платежей кассовый аппарат требует указания исключительно расчетных ставок НДС (18/118, 20/120, 10/110 — тег 1199). Если 1С передает прямую ставку, драйвер ККТ блокирует операцию с ошибкой некорректного налога.Чтобы точно определить, какие данные программа передает в драйвер ККТ, перехватим и проанализируем XML-пакет чека. Для этого обратимся к общему модулю формирования фискальных данных.
Формирование данных для кассы происходит в функции МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляФискализацияЧека. Посмотрим, как можно сохранить сформированный пакет в файл для анализа:
// Пример перехвата XML-пакета чека для отладки
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\temp\FiscalCheck.xml", "UTF-8");
ЗаписьXML.ЗаписатьСыройXML(XMLПакет);
ЗаписьXML.Закрыть();
Также проанализируем логи драйвера торгового оборудования (например, для ККТ АТОЛ логи располагаются по пути C:\Users\<ИмяПользователя>\AppData\Roaming\ATOL\DRIVERS\). В логах будет четко зафиксировано, какое именно значение тега VATRate или номера налога было отклонено кассой.
Если требуется оперативно пробить чек без внесения изменений в конфигурацию и драйвер, применим изменение регламента оформления документов:
В этом случае признак способа расчета определится как «Полный расчет» или «Оплата кредита», для которых применяется прямая ставка НДС, и фискальный регистратор напечатает чек без ошибок.
Если на предприятии обязательно требуется прием авансов по заказам через ПКО, внесем исправление в алгоритм подготовки данных чека через механизм расширений конфигурации. Проверим, как обрабатывается ставка НДС в зависимости от типа расчета:
// Корректировка ставки НДС для авансовых платежей
Если СпособРасчета = Перечисления.ПризнакиСпособаРасчета.Аванс
ИЛИ СпособРасчета = Перечисления.ПризнакиСпособаРасчета.Предоплата Тогда
Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
СтавкаНДСДляЧека = "vat120"; // Расчетная ставка 20/120
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
СтавкаНДСДляЧека = "vat118"; // Расчетная ставка 18/118
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
СтавкаНДСДляЧека = "vat110"; // Расчетная ставка 10/110
КонецЕсли;
КонецЕсли;
Также убедимся, что в справочнике ВидыНоменклатуры для используемых позиций корректно заполнен реквизит ТипПризнакаПредметаРасчета (должно быть указано значение Товар или Услуга).
Проверим настройки соответствия ставок налога в тесте драйвера фискального регистратора:
18/118 и 20/120).