Переход с формата фискальных данных (ФФД) версии 1.0 на 1.05 является обязательным этапом для большинства компаний, использующих контрольно-кассовую технику. Однако при модификации старых конфигураций 1С или использовании драйверов Атол серии 8.х программисты часто сталкиваются с неочевидными ошибками. В этой статье мы подробно разберем структуру XML-пакета, проанализируем типичные ошибки драйвера и выясним, какие реквизиты стали обязательными в версии 1.05.
Рассмотрим ситуацию: при попытке пробить чек на ККТ Атол 22Ф с новым фискальным накопителем (ФН) под управлением драйвера версии 8.16 возникают ошибки вида «Неизвестная ошибка ФН» или «При передаче скидки для печати запрещена регистрация скидки». Проанализируем причины их появления.
Ошибка «Неизвестная ошибка ФН» чаще всего связана с отсутствием обязательных тегов, которые появились в ФФД 1.05, но игнорировались в 1.0. К таким тегам относятся признак способа расчета и признак предмета расчета. Если драйвер или прошивка кассы ожидают эти данные, а 1С их не передает, ФН отклоняет операцию.
Ошибка «Запрещена регистрация скидки» возникает из-за конфликта математики 1С и внутренних алгоритмов драйвера. В ФФД 1.05 изменился подход к расчету итоговых сумм: теперь рекомендуется передавать уже конечную цену товара с учетом всех скидок, чтобы избежать расхождений в копейках при округлении, которые касса может интерпретировать как ошибку.
Разберем по шагам структуру XML-файла, который 1С передает драйверу (согласно стандарту 1С «Библиотека подключаемого оборудования»). Пакет состоит из трех основных секций: Parameters, Positions и Payments.
1. Секция Parameters
Здесь описываются общие параметры чека. Посмотрим на важные атрибуты:
PaymentType — тип расчета (например, 1 — приход).TaxVariant — система налогообложения. Это поле стало критически важным. Если у организации настроено несколько систем (например, ОСН и Патент), касса не поймет, какую выбрать, если атрибут не указан.CashierName — ФИО кассира.CashierVATIN — ИНН кассира. В ФФД 1.05 рекомендуется заполнять это поле (12 цифр).SenderEmail и CustomerEmail — адреса отправителя и покупателя для отправки электронного чека.2. Секция Positions
Это табличная часть чека. Каждая позиция описывается тегом FiscalString. Выясним, какие атрибуты необходимы для корректной работы в режиме 1.05:
Name — наименование товара.Quantity — количество.Price — цена за единицу. Важно: в ФФД 1.05 рекомендуется передавать цену уже с учетом скидки.Amount — итоговая сумма по строке.Tax — ставка НДС (например, none, 10, 18 или 20). Значение должно строго соответствовать настройкам в таблицах ККТ.SignMethodCalculation — признак способа расчета (новое в 1.05). Например, 4 — полный расчет.SignSubjectCalculation — признак предмета расчета (новое в 1.05). Например, 1 — товар.3. Секция Payments
Здесь указываются способы оплаты. Рассмотрим основные типы:
Cash — наличные.CashLessType1 — безналичные (электронные).Проанализируем пример кода 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С:
СуммаСтроки).СуммаСтроки / Количество.Price и итоговую сумму в Amount.Такой подход исключает возникновение ошибки «Запрещена регистрация скидки», так как для драйвера это выглядит как продажа товара по определенной цене без применения дополнительных модификаторов цены на уровне кассы.
Важно помнить, что программный код — это только половина успеха. Проанализируем аппаратную часть:
Department. Если передать 0, некоторые версии драйверов могут вызывать Access Violation. По умолчанию рекомендуется использовать 1.Рассмотрим также совет профессионалов: если стандартные «обертки» 1С (через XML) продолжают выдавать ошибки, которые трудно диагностировать, можно использовать прямое управление объектом драйвера. Это позволяет передавать команды кассе последовательно: BeginItem, Registration, CloseCheck. Это более трудоемкий путь с точки зрения разработки, но он дает полный контроль над каждым тегом ФФД.
Таким образом, для успешного формирования чека по стандарту 1.05 необходимо обеспечить актуальность прошивки, добавить в XML-пакет признаки способа и предмета расчета, а также очистить передаваемые данные от явных упоминаний скидок, заменив их на чистые итоговые суммы.