Как исправить ошибку драйвера -4048 «Не задан необходимый реквизит» при печати чека коррекции из 1С?

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

При оформлении чеков коррекции на фискальных регистраторах (особенно марки АТОЛ) через программы 1С разработчики и системные администраторы часто сталкиваются с неприятной ошибкой. Программа выдает предупреждение: «При печати чека произошла ошибка. Ошибка реквизита: Не задан необходимый реквизит для совершения операции», а в логах драйвера фиксируется код ошибки -4048 (или внутренний код E165-518).

В этой статье мы подробно разберем, почему возникает данная ошибка, какие реквизиты ККТ считает обязательными для фискальных документов коррекции по форматам ФФД 1.05, 1.1 и 1.2, и рассмотрим три практических способа решения этой проблемы.

Выясняем причину: почему ККТ требует дополнительные реквизиты?

С развитием форматов фискальных данных (ФФД) требования налогового законодательства к чекам коррекции существенно ужесточились. Если раньше (в старых версиях ФФД 1.0) чек коррекции представлял собой лишь общую сумму «изъятия» или «прихода» без детализации, то современные стандарты требуют передавать полную информацию о причинах проведения коррекции.

Рассмотрим основные причины возникновения ошибки -4048:

  1. Отсутствие основания коррекции (ФФД 1.05 и выше): Фискальный накопитель и прошивка кассы требуют обязательного заполнения группы тегов «Основание коррекции» (тег 1174). Сюда входят тип коррекции (самостоятельно или по предписанию налоговой), дата, номер и наименование документа-основания (например, акта сверки или объяснительной записки).
  2. Отсутствие товарной спецификации (для ФФД 1.1 и 1.2): Если ваша кассовая техника переведена на новые форматы ФФД, чек коррекции по своей структуре становится практически идентичным стандартному чеку продажи. В нем обязательно должна присутствовать товарная часть — секция Positions с указанием наименования товара, цены, количества, ставки НДС, признака предмета и способа расчета.
  3. Ограничения БПО (Библиотеки подключаемого оборудования) 1С: В устаревших конфигурациях 1С или при использовании старых обработок обслуживания касс XML-пакет 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-пакета в коде 1С

Если мы разрабатываем собственную схему интеграции или дорабатываем нетиповую конфигурацию 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:

Если касса работает на ФФД 1.2, нам также потребуется передать товарную часть. В этом случае структура расширяется добавлением коллекции Positions, аналогично обычному чеку продажи:


<Positions>
    <FiscalString Name="Товарная позиция коррекции" Quantity="1" Price="2015" Amount="2015" Department="1" Tax="None" SignMethodCalculation="4" SignCalculationObject="1"/>
</Positions>

Решение 2. Пробитие чека коррекции напрямую через «Тест драйвера ККТ»

Если чеки коррекции на предприятии пробиваются крайне редко, доработка кода 1С или обновление конфигурации могут быть экономически нецелесообразными. В таком случае самым быстрым и надежным решением будет использование утилиты от производителя ККТ.

Давайте по шагам разберем процесс пробития чека коррекции через утилиту «Тест драйвера АТОЛ» (версия 10.х):

  1. Закройте программу 1С на компьютере, к которому подключена касса, чтобы освободить COM-порт (канал связи).
  2. Запустите программу «Тест драйвера ККТ». В правом верхнем углу установите флаг «Включено».
  3. В левом вертикальном меню перейдите в раздел «Чек».
  4. В поле «Тип чека» выберите нужное значение. Для коррекции продаж выберите «7 - Чек коррекции прихода» (или «9 - Чек коррекции расхода» при необходимости).
  5. Перейдите во вкладку «Основание коррекции». Здесь необходимо заполнить обязательные поля:
    • Тип коррекции: выберите «0 - Самостоятельно» или «1 - По предписанию».
    • Дата документа: укажите дату совершения корректируемого события.
    • Номер документа: укажите номер акта или предписания.
    • Наименование документа: впишите текст основания (например, «Акт № 5 от 12.10.2023»).
    Нажмите кнопку «Записать основание коррекции».
  6. Нажмите кнопку «Открыть чек» в нижней части окна программы.
  7. Если ККТ работает на ФФД 1.1 или 1.2, перейдите на вкладку регистрации позиций, заполните наименование товара, цену, количество, выберите ставку НДС и нажмите кнопку «Регистрация».
  8. Перейдите во вкладку «Оплата». Укажите сумму коррекции в строке соответствующего типа оплаты (например, в поле «Электронными» или «Наличными») и нажмите кнопку «Оплата».
  9. Нажмите кнопку «Закрыть чек». Касса распечатает корректный чек коррекции, а данные улетучатся в ОФД без ошибок реквизитов.

Решение 3. Настройка параметров по умолчанию в ККТ и подбор драйверов

Существуют ситуации, когда обновление конфигурации 1С невозможно, а ручной ввод чеков через утилиту драйвера не подходит из-за больших объемов данных. В таком случае можно воспользоваться системными обходами:

Вариант А: Использование альтернативной версии драйверов. Как показывает практика интеграторов ККТ, при использовании старых драйверов АТОЛ семейства 9.х требования к передаваемым реквизитам XML-пакета чека коррекции из 1С обрабатываются драйвером мягче. Перевод интеграционной компоненты 1С на работу с 9-й версией драйверов в некоторых случаях позволяет пробивать чеки коррекции без переписывания кода конфигурации.

Вариант Б: Заполнение реквизитов по умолчанию в таблицах ККТ. Если драйвер ругается на отсутствие признака предмета расчета (тег 1212) или признака способа расчета (тег 1214) при интеграции по ФФД 1.05, мы можем жестко прописать эти значения в самой кассе. Для этого через «Тест драйвера ККТ» зайдите в свойства кассы, найдите раздел параметров ККТ и установите значения по умолчанию для данных тегов. В этом случае ККТ при получении «пустого» запроса из 1С будет автоматически подставлять дефолтные параметры, удовлетворяя требования ФНС и успешно закрывая документ.

Мы надеемся, что предложенные методы помогут вам успешно справиться с ошибкой -4048 и корректно передать данные в налоговые органы.

← На главную