Ошибка с кодом 33h (Некорректные параметры в команде) при работе с кассовыми аппаратами семейства «Штрих-М» является одной из самых «размытых» и сложных в диагностике. Она сигнализирует о том, что драйвер передал в фискальный регистратор (ФР) данные, которые аппарат не может обработать из-за их формата, длины или несоответствия текущим настройкам (таблицам) кассы. Рассмотрим подробно, как локализовать и устранить эту проблему, пройдя путь от анализа логов до проверки каждой цифры в реквизитах.
Прежде чем менять настройки или перепрошивать аппарат, нам необходимо выяснить, на какой именно команде происходит сбой. В драйверах «Штрих-М» (версии 4.x и выше) предусмотрено ведение подробного лога. Разберем, как его активировать и прочитать.
Перейдем в настройки подключаемого оборудования в 1С, откроем параметры драйвера и установим флаг «Вести лог», указав путь к файлу. После воспроизведения ошибки откроем этот файл и проанализируем последние строки. Нас интересует код ошибки и название команды. Рассмотрим пример из практики:
[19.04.2018 17:23:05.641] [DEBUG] TFiscalPrinter Команда: 2Eh, Запрос структуры поля
[19.04.2018 17:23:05.641] [DEBUG] TPrinterProtocol -> 02 07 2E 1E 00 00 00 12 0F 2A
[19.04.2018 17:23:05.641] [ERROR] TFiscalPrinter (51, 33h) Некорректные параметры в команде
В данном случае мы видим, что ошибка возникает при выполнении низкоуровневой команды 2Eh. Это может означать, что 1С запрашивает параметры поля таблицы ККТ, которого не существует в данной версии прошивки, либо передает индекс поля, выходящий за допустимый диапазон. Если ошибка возникает на этапе записи данных (например, FF43h — передача TLV), значит, какой-то реквизит чека заполнен неверно.
Наиболее частая причина ошибки 33h — некорректно заполненные контактные данные или идентификаторы. Проанализируем самые критичные поля:
+7 и не содержал скобок или тире, если драйвер не умеет их фильтровать автоматически.Фискальный накопитель и сама касса имеют жесткие привязки к системам налогообложения (СНО) и типам оплаты. Проверим следующие соответствия:
Во-первых, выясним, какая СНО установлена в ККТ. Сделаем это через тест драйвера (раздел «Состояние»). Если в 1С в учетной политике выбрана «Упрощенная», а касса зарегистрирована только на «Общую», при попытке пробития чека мы получим некорректные параметры. Проанализируем также налоговые ставки: если в 1С указано «Без НДС», а в кассе эта секция не настроена, возникнет конфликт.
Во-вторых, обратим внимание на Типы оплат. В 1С настройки оплаты (Наличные, Безналичные) должны соответствовать номерам типов оплат в таблицах ККТ. Если 1С отправляет оплату по типу №4, а в таблице №2 кассового аппарата это поле не проинициализировано (пустое), возникнет ошибка 33h. Рекомендуем зайти в «Таблицы» через тест драйвера и проверить таблицу №2 «Типы оплат».
Часто проблема кроется не в данных, а в том, как драйвер взаимодействует с операционной системой. Рассмотрим технические нюансы установки:
Проанализируем местоположение библиотек. Драйвер «Штрих-М» версии 4.14 и выше устанавливает компоненты для 1С в папку C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C\. Выясним, есть ли у пользователя, под которым запускается 1С, полные права на эту папку. Если прав недостаточно, 1С не сможет корректно инициализировать компоненту или записать временные параметры, что иногда выливается в ошибку 33h.
Также важно убедиться, что в 1С загружена актуальная версия компоненты. Выполним следующие действия:
shtrih-m_24.zip (или аналогичного из папки установленного драйвера).Если аппарат старый (выпущен до 2017-2018 годов) и ни разу не обновлялся, он может физически не поддерживать команды, которые посылает современный драйвер версии 4.14. Проанализируем ситуацию: современная 1С работает по формату фискальных данных (ФФД) 1.05 или 1.2. Если ККТ «понимает» только ФФД 1.0, любая команда, содержащая новые теги (например, 1212 — признак предмета расчета или 1214 — признак способа расчета), будет возвращать ошибку параметров.
Решение проблемы прошивки:
Рассмотрим вариант отката драйвера. Если перепрошивка аппарата в ЦТО сейчас невозможна, попробуем удалить версию 4.14 (обязательно очистив папку в Program Files) и установить старую стабильную версию, например, 4.13. Это заставит 1С использовать более простой набор команд, который может «переварить» старая прошивка. Однако помним, что для работы с маркировкой (Честный Знак) и ФФД 1.2 обновление прошивки является обязательным.
Для тех, кто торгует маркированным товаром, ошибка 33h часто связана с тегом 2108 (Мера количества предмета расчета). В ФФД 1.2 этот тег стал обязательным. Если в 1С для товара не заполнена единица измерения или она не сопоставлена с классификатором, драйвер передает пустое значение в поле, где ожидается код единицы измерения. Касса, следуя логике протокола, отклоняет такую команду.
Проанализируем код в 1С, который отвечает за формирование параметров ККТ:
ПараметрыККТ = "";
Попытка
Ответ = ОбъектДрайвера.ПолучитьПараметрыККТ(ПараметрыПодключения.ИДУстройства, ПараметрыККТ);
Если НЕ Ответ Тогда
ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
// Здесь часто возвращается 33h, если устройство не готово
КонецЕсли;
Исключение
// Обработка исключения
КонецПопытки;
Если вы столкнулись с ошибкой именно при вызове метода ПолучитьПараметрыККТ, убедитесь, что касса не находится в режиме ожидания ввода даты, не открыта в другом приложении (например, в самом тесте драйвера) и что смена не превысила 24 часа.
Подводя итог, проанализируем последовательность действий для быстрого решения:
Соблюдение этих шагов позволит выявить «слабое звено» в цепочке передачи данных и успешно фискализировать чеки без доработок программного кода 1С.