При работе с контрольно-кассовой техникой (ККТ) Атол через 10-ю версию драйвера программисты и бухгалтеры часто сталкиваются с ситуацией, когда попытка пробить чек коррекции возврата заканчивается ошибкой "Неверный тип чека". Особенно остро этот вопрос встает, когда необходимо исправить операции, совершенные на незарегистрированной кассе или при выявлении ошибок в расчетах прошлых периодов. Проанализируем, почему возникает эта проблема, опираясь на чтение логов ККМ, и как правильно выполнить требования налоговой службы, соблюдая протоколы ФФД и логику работы драйвера.
Для начала разберем техническую сторону вопроса. Ошибка Неверный тип чека при вызове метода LIBFPTR_RT_SELL_RETURN_CORRECTION (возврат прихода коррекции) в большинстве случаев связана с используемой версией Формата Фискальных Данных (ФФД). Если ваша касса работает на ФФД 1.05, то данная операция недоступна на уровне самой прошивки ККТ и протокола передачи данных.
В ФФД версии 1.05 предусмотрены только два типа чеков коррекции:
Типа документа «Чек коррекции возврата прихода» в спецификации ФФД 1.05 не существует. Этот функционал появился только в более современных версиях — ФФД 1.1 и ФФД 1.2. Поэтому, когда драйвер Атол 10 получает команду на формирование коррекции возврата для кассы с ФФД 1.05, он резонно возвращает ошибку, так как устройство не может фискализировать документ, не предусмотренный его форматом.
Рассмотрим, как же тогда выполнить требование ФНС и «откорректировать» расчеты, если технически чек коррекции возврата недоступен. Согласно разъяснениям налоговой службы и методическим рекомендациям, в ФФД 1.05 исправление ошибок производится не чеком коррекции, а обычными чеками с признаками расчета Возврат прихода и Приход.
Разберем ситуацию по шагам, если вам нужно исправить неверно пробитый чек:
Возврат прихода. Этот чек должен полностью дублировать данные ошибочного чека (те же позиции, цены, налоги).1192 («Дополнительный реквизит чека»). В нем указывается фискальный признак (ФП или ФПД) того самого некорректного чека, который мы исправляем.Приход с корректными данными. В нем также укажите ФП некорректного чека в теге 1192.Если же расчет вообще не был произведен через ККТ (случай «неприменения ККТ», например, работа на незарегистрированной кассе), алгоритм будет иным:
Посмотрим на пример кода, как правильно инициализировать типы чеков в драйвере, чтобы избежать ошибок. Проанализируем работу с объектом драйвера IFfptr.
Для формирования чека коррекции прихода (который разрешен в ФФД 1.05) мы используем следующий подход:
// Установка типа чека - Приход коррекции
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_CORRECTION);
fptr.openReceipt();
// Обязательные параметры коррекции для ФФД 1.05
fptr.setParam(fptr.LIBFPTR_PARAM_CORRECTION_TYPE, fptr.LIBFPTR_CORRECTION_SELF_ILLUMINATED); // Самостоятельно
fptr.setParam(fptr.LIBFPTR_PARAM_CORRECTION_BASE_DATE, "2023.10.27"); // Дата нарушения
fptr.setParam(fptr.LIBFPTR_PARAM_CORRECTION_BASE_NUMBER, "123"); // Номер документа основания
fptr.utilFormTlv();
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_STRUCT, fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE));
fptr.writeOption();
А теперь проанализируем, почему ваша попытка сделать возврат коррекции программно не проходит. Вы, скорее всего, используете:
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_RETURN_CORRECTION);
Как мы уже выяснили, для ФФД 1.05 это приведет к ошибке. Вместо этого, для оформления возврата, который «забыли» пробить, используйте стандартный тип чека:
// Используем обычный возврат прихода вместо коррекции возврата
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_RETURN);
fptr.openReceipt();
// Регистрация позиции
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, "Товар");
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100.00);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT20);
fptr.registration();
// Заполнение тега 1192 для связи с основанием (если есть)
fptr.setParam(1192, "1234567890");
fptr.closeReceipt();
Если вы пробили чек на кассе, которая еще не была зарегистрирована в ФНС, такие данные не попадут в налоговую (даже если они есть в личном кабинете ОФД, налоговая их не признает легитимными). С точки зрения закона 54-ФЗ — это неприменение ККТ.
Чтобы исправить ситуацию и избежать штрафов, выполните следующие действия:
При разработке интеграции с ККТ всегда полезно проверять возможности текущей прошивки и версии ФФД программно. В драйвере Атол 10 для этого существуют свойства, которые позволяют определить, поддерживает ли ККТ те или иные типы операций. Проанализируем ситуацию: перед формированием чека коррекции можно запросить параметры ККТ, чтобы понять, какой путь исправления выбрать.
Помните, что чеки коррекции в 1.05 — это инструмент для отражения неучтенной выручки. Для исправления ошибок в уже существующих фискальных документах в 1.05 используются обратные чеки. Если вы перейдете на ФФД 1.2 (что обязательно для маркированных товаров), там логика изменится, и LIBFPTR_RT_SELL_RETURN_CORRECTION станет доступным и основным методом исправления любых ошибок.
Таким образом, для решения вашей проблемы прямо сейчас:
SELL_RETURN_CORRECTION для текущей кассы.SELL_RETURN (обычный возврат).1192.