Почему при печати чека из ПКО возникает ошибка 26 "Неверный формат команды" на ККТ Атол, если в РМК все работает?

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

При работе с торговым оборудованием в 1С часто возникают ситуации, когда фискальный регистратор (ККТ) корректно работает в одном режиме (например, когда настроена работа с несколькими кассами в РМК), но выдает ошибки в другом (например, при оформлении ПКО). Рассмотрим подробно проблему, с которой сталкиваются пользователи 1С:Розница 2.3 и касс Атол: ошибка с кодом 26 «Неверный формат команды».

Симптомы и диагностика проблемы

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

Ошибка 26: Неверный формат команды

При этом, если тот же товар или услугу пробивать через Рабочее место кассира (РМК), чек выходит без проблем. Чтобы исключить влияние человеческого фактора на этапе настройки, иногда полезно предварительно выводить нефискальные чеки на кассе ККМ для обучения персонала — для этого есть печать нефискальных товарных чеков для 1С:Розница. Обновление прошивки ККТ до актуальной версии и обновление драйвера (в данном случае рассматривается ветка драйверов 10.10.x) не устраняют ошибку. Также стоит убедиться, что базовые параметры связи в норме и не требуется коррекция времени на кассах Атол для синхронизации с ПК.

Чтобы понять природу ошибки, нам необходимо проанализировать данные, которые 1С отправляет в кассу. Для этого используются логи драйвера или XML-пакеты, формируемые подсистемой подключаемого оборудования. Сравним пакеты данных (XML), формируемые в РМК и в ПКО.

Анализ XML-пакетов данных

В ходе диагностики мы выгружаем XML, который метод СформироватьЧек передает в драйвер. Давайте внимательно изучим различия, так как именно в них кроется причина поведения кассы.

Данные чека из РМК (успешная печать):


CheckPackage:
Electronically: Нет
DeviceID: ATOL_KKT_1C_V10_X#1
CalculationSubject="1" (Товар)
MeasureOfQuantity="0" (шт)
CustomerDetail: [Пустой тег или отсутствует]

Данные чека из ПКО (ошибка 26):


CheckPackage:
Electronically: Нет
DeviceID: ATOL_KKT_1C_V10_X#8
CalculationSubject="10" (Платеж/Иное)
MeasureOfQuantity="255" (Единица измерения не указана/Применяется при отсутствии)
SaleLocation="офис Транзит"
CustomerDetail: [Заполненная информация о покупателе, включая ИНН]

Давайте разберем критические отличия, которые мы обнаружили:

  1. Информация о покупателе (CustomerDetail): В РМК чек часто пробивается на «Розничного покупателя», и данные о конкретном контрагенте не передаются. В ПКО же мы выбираем конкретного контрагента из справочника (особенно если используется автоматическое создание ПКО из файла Excel), и 1С пытается передать его данные (Наименование и ИНН) в кассу.
  2. Признак предмета расчета (CalculationSubject): В РМК обычно передается значение "1" (Товар). В ПКО, так как это прием денежных средств, может передаваться "10" (Платеж/Выплата).
  3. Единица измерения (MeasureOfQuantity): В ПКО передается значение "255". Согласно ФФД 1.2, это значение используется, когда единица измерения не определена.

Основная причина ошибки: Валидация ИНН

Как показала практика и детальный разбор ситуации, наиболее частой причиной ошибки 26 в данном контексте является невалидный ИНН покупателя.

Современные прошивки ККТ Атол (особенно при работе с ФФД 1.05 и 1.2) производят строгую проверку передаваемых тегов. Тег 1228 «ИНН покупателя» проверяется не только на количество цифр (10 или 12), но и на контрольную сумму (алгоритм проверки контрольного числа).

В рассматриваемом случае в базе 1С у контрагента был введен ИНН, который имел верное количество знаков, но являлся вымышленным (набором случайных цифр). 1С при формировании чека из ПКО берет данные из справочника Контрагенты и заполняет структуру CustomerDetail.

Когда драйвер ККТ получает этот пакет, он (или сама касса) проверяет ИНН на валидность. Если проверка не проходит, возвращается универсальная ошибка протокола — Error 26 (Неверный формат команды). Это означает, что данные в команде не соответствуют формату, ожидаемому фискальным накопителем или прошивкой.

Решение проблемы

Для исправления ошибки необходимо выполнить следующие действия с данными в вашей информационной базе:

  1. Откройте документ Приходный кассовый ордер, из которого не удается пробить чек.
  2. Перейдите в карточку контрагента, указанного в документе.
  3. Проверьте поле ИНН.
    • Если ИНН введен «для галочки» (например, 1234567890), его необходимо заменить на реальный существующий ИНН или очистить (если передача ИНН не является обязательной для данного типа расчета по закону, хотя для расчетов между юрлицами/ИП это обязательно).
    • Используйте встроенный сервис проверки контрагентов в 1С или онлайн-сервисы (например, на сайте ФНС), чтобы убедиться, что ИНН существует — также есть готовая обработка автозаполнения контрагентов по базе ФНС.
  4. После ввода корректного ИНН сохраните карточку контрагента и повторите попытку пробития чека из ПКО.

Если из-за ошибки чеки не пробивались длительное время, вам могут потребоваться чеки коррекции за период для 1С:Розница 2.3, чтобы привести фискальные данные в соответствие с реальностью. Для пользователей других конфигураций, например УТ 10, может быть актуально массовое создание и фискализация чеков коррекции.

Дополнительные факторы (ФФД 1.2 и теги)

В логах мы заметили использование тега MeasureOfQuantity="255". Это важный момент для касс, работающих по ФФД 1.2.

Если ваша касса прошита под ФФД 1.2, но драйвер или 1С отправляют данные, не соответствующие строгой логике этого формата, также может возникнуть ошибка 26. Значение 255 для меры количества допустимо, но в сочетании с дробным количеством или определенными признаками предмета расчета может вызывать конфликты.

Также обратите внимание на тег SaleLocation (Место расчетов). В проблемном XML было указано значение "офис "Транзит"" (с кавычками внутри). Хотя современные драйверы обычно корректно экранируют спецсимволы, наличие вложенных кавычек или слишком длинного текста (более 256 символов) в адресе расчетов также может приводить к ошибкам формата.

Рекомендации по профилактике

Чтобы избежать подобных проблем в будущем, рекомендуем:

  1. Включить в настройках 1С автоматическую проверку контрагентов по сервису 1С:Контрагент. Это исключит ввод несуществующих ИНН.
  2. При возникновении ошибок ККТ всегда анализировать журнал драйвера. В 1С его можно найти через настройки подключаемого оборудования:

    Администрирование -> Подключаемое оборудование -> ККТ с передачей данных -> Параметры -> Журналы.

  3. Если вы используете ПКО для пробития чеков розничным покупателям (физлицам), убедитесь, что в качестве контрагента выбран предопределенный элемент «Розничный покупатель» или контрагент с пустым ИНН (если это допустимо вашими бизнес-процессами), чтобы избежать лишних проверок со стороны ККТ.

Заключение

Ошибка 26 при печати из ПКО в 90% случаев связана с некорректными данными, которые 1С пытается передать в теги покупателя (ИНН или Наименование). В отличие от РМК, где продажа часто обезличена, ПКО передает полные реквизиты контрагента, которые подвергаются строгой валидации на уровне прошивки кассы.

← На главную