Как правильно сформировать XML-пакет для пробития чека по ФФД 1.05 в 1С при использовании ККТ Атол

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

Переход с формата фискальных данных (ФФД) версии 1.0 на 1.05 является обязательным этапом для большинства компаний, использующих контрольно-кассовую технику. Однако при модификации старых конфигураций 1С или использовании драйверов Атол серии 8.х программисты часто сталкиваются с неочевидными ошибками. В этой статье мы подробно разберем структуру XML-пакета, проанализируем типичные ошибки драйвера и выясним, какие реквизиты стали обязательными в версии 1.05.

Анализ проблемы и типичных ошибок драйвера

Рассмотрим ситуацию: при попытке пробить чек на ККТ Атол 22Ф с новым фискальным накопителем (ФН) под управлением драйвера версии 8.16 возникают ошибки вида «Неизвестная ошибка ФН» или «При передаче скидки для печати запрещена регистрация скидки». Проанализируем причины их появления.

Ошибка «Неизвестная ошибка ФН» чаще всего связана с отсутствием обязательных тегов, которые появились в ФФД 1.05, но игнорировались в 1.0. К таким тегам относятся признак способа расчета и признак предмета расчета. Если драйвер или прошивка кассы ожидают эти данные, а 1С их не передает, ФН отклоняет операцию.

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

Структура XML-пакета для ФФД 1.05

Разберем по шагам структуру XML-файла, который 1С передает драйверу (согласно стандарту 1С «Библиотека подключаемого оборудования»). Пакет состоит из трех основных секций: Parameters, Positions и Payments.

1. Секция Parameters

Здесь описываются общие параметры чека. Посмотрим на важные атрибуты:

2. Секция Positions

Это табличная часть чека. Каждая позиция описывается тегом FiscalString. Выясним, какие атрибуты необходимы для корректной работы в режиме 1.05:

3. Секция Payments

Здесь указываются способы оплаты. Рассмотрим основные типы:

Пример корректного XML-пакета

Проанализируем пример кода XML, который соответствует требованиям ФФД 1.05 и успешно обрабатывается современными прошивками Атол:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters 
        PaymentType="1" 
        TaxVariant="2" 
        CashierName="Иванов И.И." 
        CashierVATIN="123456789012" 
        SenderEmail="check@example.com" 
        CustomerEmail="customer@mail.ru"/>
    <Positions>
        <FiscalString 
            Name="Товар примерный" 
            Quantity="1" 
            Price="1000.00" 
            Amount="1000.00" 
            Department="1" 
            Tax="none" 
            SignMethodCalculation="4" 
            SignSubjectCalculation="1"/>
    </Positions>
    <Payments Cash="0" CashLessType1="1000.00" />
</CheckPackage>

Рекомендации по работе со скидками

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

  1. Рассчитайте итоговую сумму строки с учетом всех скидок (СуммаСтроки).
  2. Рассчитайте эффективную цену как СуммаСтроки / Количество.
  3. Передайте полученную цену в атрибут Price и итоговую сумму в Amount.

Такой подход исключает возникновение ошибки «Запрещена регистрация скидки», так как для драйвера это выглядит как продажа товара по определенной цене без применения дополнительных модификаторов цены на уровне кассы.

Технические нюансы: прошивка и драйверы

Важно помнить, что программный код — это только половина успеха. Проанализируем аппаратную часть:

Рассмотрим также совет профессионалов: если стандартные «обертки» 1С (через XML) продолжают выдавать ошибки, которые трудно диагностировать, можно использовать прямое управление объектом драйвера. Это позволяет передавать команды кассе последовательно: BeginItem, Registration, CloseCheck. Это более трудоемкий путь с точки зрения разработки, но он дает полный контроль над каждым тегом ФФД.

Таким образом, для успешного формирования чека по стандарту 1.05 необходимо обеспечить актуальность прошивки, добавить в XML-пакет признаки способа и предмета расчета, а также очистить передаваемые данные от явных упоминаний скидок, заменив их на чистые итоговые суммы.

← На главную