Как выглядит XML-пакет чека CheckPackage с новыми ставками НДС в 1С?

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

При интеграции кассового оборудования и доработке механизмов фискализации чеков разработчики сталкиваются с необходимостью формирования пакета данных в формате XML. Согласно стандарту интеграции подключаемого оборудования 1С, все фискальные данные передаются в драйвер ККТ в виде унифицированного пакета CheckPackage. Разберем структуру этого документа, правила заполнения реквизитов для новых ставок НДС, а также типичные требования к оборудованию и программным компонентам.

Структура пакета CheckPackage с новыми ставками НДС

Рассмотрим типовой пример XML-документа, сформированного для фискализации чека прихода. В данном примере представлены позиции с прямыми ставками НДС 5% и 7%, а также позиция предоплаты с расчетной ставкой 5/105:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters CashierName="Иванов И. И." CashierINN="770123456789" OperationType="1" TaxationSystem="1" SaleAddress="г. Москва, ул. Примерная, д. 1" CustomerEmail="" CustomerPhone=""/>
    <Positions>
        <FiscalString Name="Товар со ставкой 5%" Quantity="1" PriceWithDiscount="105.00" AmountWithDiscount="105.00" DiscountAmount="0" Department="1" VATRate="5" VATAmount="5.00" PaymentMethod="4" CalculationSubject="1" MeasureOfQuantity="0"/>
        <FiscalString Name="Товар со ставкой 7%" Quantity="1" PriceWithDiscount="107.00" AmountWithDiscount="107.00" DiscountAmount="0" Department="1" VATRate="7" VATAmount="7.00" PaymentMethod="4" CalculationSubject="1" MeasureOfQuantity="0"/>
        <FiscalString Name="Аванс со ставкой 5/105" Quantity="1" PriceWithDiscount="105.00" AmountWithDiscount="105.00" DiscountAmount="0" Department="1" VATRate="5/105" VATAmount="5.00" PaymentMethod="1" CalculationSubject="10" MeasureOfQuantity="0"/>
    </Positions>
    <Payments Cash="0" ElectronicPayment="317.00" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>

Значения атрибута VATRate и расчет налога

В фискальной строке FiscalString ключевым реквизитом для определения ставки налога выступает атрибут VATRate. Для новых ставок НДС стандартом предусмотрены следующие строковые значения:

  1. "5" — основная ставка НДС 5%.
  2. "7" — основная ставка НДС 7%.
  3. "5/105" — расчетная ставка НДС 5/105 (применяется при получении авансов и предоплат).
  4. "7/107" — расчетная ставка НДС 7/107 (применяется при получении авансов и предоплат).

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

Технические требования и условия корректной фискализации

Проанализируем технические нюансы, несоблюдение которых приводит к ошибкам при отправке чека на ККТ:

  1. Версия Библиотеки подключаемого оборудования (БПО): Поддержка значений новых ставок НДС включена в спецификацию требований к разработке драйверов ревизии 4.x и выше. Если конфигурация работает на устаревшей версии БПО, встроенная XSD-схема валидации пакета отклонит XML с ошибкой структуры или не сможет корректно сформировать атрибуты.
  2. Прошивка кассового аппарата и драйвер: Данные из XML преобразуются драйвером в параметры фискального документа (тег 1199 в ФФД). Если прошивка ККТ или внешняя компонента драйвера не обновлены, касса вернет ошибки: «Неверный формат команды», «Некорректное значение поля» или «Ошибка реквизита».

Способы получения и отладки XML-пакета чека

Если требуется перехватить реальный XML-пакет, формируемый типовой конфигурацией 1С, разберем доступные варианты отладки:

  1. Включение логирования драйвера ККТ: В режиме 1С:Предприятие откроем форму настроек подключаемого оборудования, найдем карточку кассы и включим признак отладки (логирования). При пробитии любого чека полный текст входящего пакета CheckPackage записывается в текстовый лог-файл драйвера на клиентском рабочем месте.
  2. Точка останова в коде 1С: В конфигураторе найдем модуль менеджера оборудования, отвечающий за фискализацию, и установим точку останова непосредственно перед обращением к методу драйвера СформироватьЧек(). Это позволит просмотреть значение строковой переменной с XML в окне табло или вычислить выражение.
  3. Использование эмулятора: Для проверки корректности передачи новых ставок без расхода фискального накопителя можно временно подключить «1С: Эмулятор фискального регистратора». Он позволяет смоделировать печать и убедиться, что структура XML формируется без синтаксических ошибок.
← На главную