При оформлении чеков коррекции на фискальных регистраторах (особенно марки АТОЛ) через программы 1С разработчики и системные администраторы часто сталкиваются с неприятной ошибкой. Программа выдает предупреждение: «При печати чека произошла ошибка. Ошибка реквизита: Не задан необходимый реквизит для совершения операции», а в логах драйвера фиксируется код ошибки -4048 (или внутренний код E165-518).
В этой статье мы подробно разберем, почему возникает данная ошибка, какие реквизиты ККТ считает обязательными для фискальных документов коррекции по форматам ФФД 1.05, 1.1 и 1.2, и рассмотрим три практических способа решения этой проблемы.
С развитием форматов фискальных данных (ФФД) требования налогового законодательства к чекам коррекции существенно ужесточились. Если раньше (в старых версиях ФФД 1.0) чек коррекции представлял собой лишь общую сумму «изъятия» или «прихода» без детализации, то современные стандарты требуют передавать полную информацию о причинах проведения коррекции.
Рассмотрим основные причины возникновения ошибки -4048:
Positions с указанием наименования товара, цены, количества, ставки НДС, признака предмета и способа расчета.CheckCorrectionPackage формируется в упрощенном виде, где передаются только общие суммы и тип оплаты, но напрочь отсутствуют обязательные по закону теги. Современные прошивки ККТ такой пакет отвергают.Давайте проанализируем пример некорректного XML-пакета, который гарантированно вызовет ошибку драйвера -4048:
<?xml version="1.0" encoding="UTF-8"?>
<CheckCorrectionPackage>
<Parameters PaymentType="3" TaxVariant="2" CashierName="Вася" CorrectionType="0" Sum="2015" SumTAXNone="2015"/>
<Payments Cash="0" ElectronicPayment="2015" CashProvision="0" Credit="0" AdvancePayment="0"/>
</CheckCorrectionPackage>
В данном примере отсутствуют параметры основания коррекции (документ, дата, номер), а также нет разбивки по товарным позициям, если этого требует версия ФФД.
Если мы разрабатываем собственную схему интеграции или дорабатываем нетиповую конфигурацию 1С, нам необходимо привести структуру передаваемого XML-пакета к актуальным требованиям БПО и ФНС. Мы должны обязательно добавить атрибуты основания коррекции.
Рассмотрим правильный формат XML-пакета CheckCorrectionPackage для ФФД 1.05, который успешно обрабатывается современными версиями драйверов:
<?xml version="1.0" encoding="UTF-8"?>
<CheckCorrectionPackage>
<Parameters
PaymentType="3"
TaxVariant="1"
CashierName="Петя"
CorrectionType="0"
CorrectionBaseName="Акт выявления излишков № ТР00-000391"
CorrectionBaseDate="2019-03-08T11:14:31"
CorrectionBaseNumber="ТР00-000391"
Sum="2015"
SumTAXNone="2015"
SumTAX0="0"
SumTAX10="0"
SumTAX18="0"
SumTAX110="0"
SumTAX118="0"/>
<Payments Cash="0" ElectronicPayment="2015" Credit="0" AdvancePayment="0" CashProvision="0"/>
</CheckCorrectionPackage>
Обратите внимание на появление критически важных атрибутов в узле Parameters:
CorrectionBaseName — наименование документа, послужившего основанием для проведения коррекции (тег 1177).CorrectionBaseDate — дата документа в строгом формате XML (тег 1178), например: YYYY-MM-DDThh:mm:ss. Любое отклонение от формата даты приведет к ошибке разбора реквизита.CorrectionBaseNumber — номер документа-основания (тег 1179).Если касса работает на ФФД 1.2, нам также потребуется передать товарную часть. В этом случае структура расширяется добавлением коллекции Positions, аналогично обычному чеку продажи:
<Positions>
<FiscalString Name="Товарная позиция коррекции" Quantity="1" Price="2015" Amount="2015" Department="1" Tax="None" SignMethodCalculation="4" SignCalculationObject="1"/>
</Positions>
Если чеки коррекции на предприятии пробиваются крайне редко, доработка кода 1С или обновление конфигурации могут быть экономически нецелесообразными. В таком случае самым быстрым и надежным решением будет использование утилиты от производителя ККТ.
Давайте по шагам разберем процесс пробития чека коррекции через утилиту «Тест драйвера АТОЛ» (версия 10.х):
Существуют ситуации, когда обновление конфигурации 1С невозможно, а ручной ввод чеков через утилиту драйвера не подходит из-за больших объемов данных. В таком случае можно воспользоваться системными обходами:
Вариант А: Использование альтернативной версии драйверов. Как показывает практика интеграторов ККТ, при использовании старых драйверов АТОЛ семейства 9.х требования к передаваемым реквизитам XML-пакета чека коррекции из 1С обрабатываются драйвером мягче. Перевод интеграционной компоненты 1С на работу с 9-й версией драйверов в некоторых случаях позволяет пробивать чеки коррекции без переписывания кода конфигурации.
Вариант Б: Заполнение реквизитов по умолчанию в таблицах ККТ. Если драйвер ругается на отсутствие признака предмета расчета (тег 1212) или признака способа расчета (тег 1214) при интеграции по ФФД 1.05, мы можем жестко прописать эти значения в самой кассе. Для этого через «Тест драйвера ККТ» зайдите в свойства кассы, найдите раздел параметров ККТ и установите значения по умолчанию для данных тегов. В этом случае ККТ при получении «пустого» запроса из 1С будет автоматически подставлять дефолтные параметры, удовлетворяя требования ФНС и успешно закрывая документ.
Мы надеемся, что предложенные методы помогут вам успешно справиться с ошибкой -4048 и корректно передать данные в налоговые органы.