При работе с торговым оборудованием, в частности с популярной моделью Атол 30Ф, технические специалисты часто сталкиваются с ситуацией, когда касса отказывается пробивать чек, возвращая ошибку ФН 231. В логах драйвера это событие фиксируется как ResultCode = -4015 с описанием "Некорректное значение параметров команды ФН". Разберем подробно, почему возникает эта проблема и как ее устранить программными и аппаратными средствами.
Проанализируем ситуацию: ошибка чаще всего проявляется при использовании формата фискальных данных (ФФД) версии 1.05 и выше. В отличие от старого формата 1.0, протокол 1.05 накладывает жесткие требования к заполнению реквизитов чека. Ошибка 231 буквально означает, что в ККТ передается набор данных, который не соответствует правилам текущего протокола или настройкам самого фискального накопителя.
Рассмотрим основные факторы, провоцирующие сбой:
РевизияИнтерфейса, равный 2000, указывает на попытку работать по новому стандарту, но формат данных в самой 1С может оставаться «старым» (упрощенным).Посмотрим на пример XML-пакета, который формирует типовая конфигурация 1С (например, УТ 10.3) и который вызывает ошибку:
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters PaymentType="1" TaxVariant="0" CashierName="" CustomerEmail="" CustomerPhone=""/>
<Positions>
<FiscalString Name="Забор материала Шт" Quantity="1" Price="1" Amount="1" Department="0" Tax="0"/>
</Positions>
<Payments Cash="1" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>
Проанализируем этот код. В блоке FiscalString мы видим наименование, количество, цену и ставку налога. Однако здесь полностью отсутствует указание на тип номенклатуры. Для ФФД 1.05 крайне важно наличие атрибутов, определяющих, является ли позиция товаром или услугой. Поскольку 1С в старых обработках обслуживания может не передавать эти данные в явном виде, касса возвращает ошибку параметров.
Если ваша организация занимается исключительно оказанием услуг, мы можем решить проблему «малой кровью», не прибегая к масштабному изменению кода 1С. Мы заставим кассу по умолчанию считать любую переданную позицию «услугой».
Выполним следующие шаги в утилите «Тест драйвера ККМ» (версии 8.х):
4 (что соответствует типу «Услуга»).После этой манипуляции ККТ перестанет требовать обязательной передачи тега 1212 в каждом чеке, так как будет подставлять значение «4» автоматически. Это быстрое решение, которое позволяет запустить работу точки в кратчайшие сроки.
Разберем ситуацию, когда нам необходимо передавать тип предмета расчета динамически (например, если продаются и товары, и услуги). В этом случае необходимо модифицировать код обработки обслуживания 1С или убедиться, что параметры передаются драйверу корректно.
В объектной модели драйвера Атол за это отвечает свойство ItemType. Перед добавлением позиции чека (методом Registration или при формировании XML) необходимо явно указывать тип. Для услуг код в 1С (при использовании прямого обращения к драйверу) мог бы выглядеть так:
// Пример логики для драйвера 8.х
Драйвер.AttrNumber = 1212; // Номер тега Признак предмета расчета
Драйвер.AttrValue = 4; // 1 - товар, 4 - услуга
Драйвер.WriteAttribute();
Драйвер.Name = "Забор материала";
Драйвер.Price = 100;
Драйвер.Quantity = 1;
Драйвер.ItemType = 4; // Установка типа предмета расчета
Драйвер.Registration();
Если используется БПО (Библиотека подключаемого оборудования), убедитесь, что в справочнике «Номенклатура» корректно заполнено поле «Тип номенклатуры». Именно из него 1С берет данные для формирования XML-пакета. Для ФФД 1.05 значение должно быть «Услуга» для соответствующих позиций.
Выясним причину, почему на ОСН ошибка 231 возникает чаще. При использовании Общей системы налогообложения ККТ жестко контролирует наличие ставок НДС. В приведенном выше примере XML-пакета параметр Tax="0" соответствует ставке НДС 0%. Если ваша организация работает без НДС (но на ОСН) или использует ставку 20%, убедитесь, что код налога в XML соответствует кодам в таблицах ККТ. Неверный индекс налога также вызывает ошибку некорректных параметров команды ФН.
Проанализируем техническое состояние оборудования. Версия прошивки 5199 и драйвер 8.16 относятся к переходному периоду внедрения онлайн-касс. Современные требования законодательства (Маркировка, ФФД 1.2) требуют более свежих версий.
Для стабильной работы рекомендуется:
Bad Tag (номер тега, который вызвал сбой), что значительно упрощает поиск проблемы.3000 (для драйвера 10.х) или 2000 (для 8.х), что сигнализирует системе о необходимости использовать расширенный формат обмена данными.Таким образом, исправление ошибки ФН 231 сводится к приведению данных, передаваемых из 1С, в соответствие с требованиями протокола ФФД 1.05, либо через настройку значений «по умолчанию» в самой кассе, либо через корректировку типа номенклатуры в базе данных.