Рассмотрим ситуацию, с которой можно столкнуться при переходе со старых версий 1С (например, 7.7) на современные конфигурации, такие как 1С:Комплексная автоматизация 2.5. Проблема проявляется неожиданно: обычный чек на кассе АТОЛ вдруг перестает пробиваться, если в нем присутствует одна конкретная товарная позиция. При этом кассовый аппарат возвращает ошибку с кодом 11 и текстом «Не поддерживается в данной версии». Самое интересное, что товар не является маркированным, в чеке нет скидок или сложных условий оплаты. Разберемся, в чем может быть причина и как это исправить.
Выясняем причину: анализ логов и данных
Первым делом проанализируем ситуацию. Мы знаем, что проблема связана с конкретной номенклатурой. Если убрать ее из чека — все работает. Это сразу сужает круг поисков. Попытка изменить наименование товара или вид оплаты не дает результата, значит, дело не в "плохих" символах и не в настройках оплаты.
Ключевую подсказку дает лог драйвера ККМ. В нем можно обнаружить попытку передать на кассу параметр LIBFPTR_PARAM_MARKING_CODE, который отвечает за код маркировки. Это очень странно, ведь мы точно знаем, что товар не подлежит маркировке и никаких кодов не используется.
Чтобы понять, откуда берется этот параметр, посмотрим на XML-пакет, который 1С формирует для отправки на драйвер кассы. Для проблемной позиции он может выглядеть примерно так:
Здесь наше внимание привлекает тег <GoodCodeData EAN13="NDY1NzgyMTAzMDE2NQ=="/>. Значение "NDY1NzgyMTAzMDE2NQ==" — это не обычный штрихкод EAN-13, а строка, закодированная в формате Base64. Именно в ней и кроется корень проблемы.
Корень проблемы: некорректный штрихкод и Base64
Давайте разберем по шагам, как безобидная, на первый взгляд, запись о штрихкоде приводит к ошибке на кассе.
Некорректный штрихкод в базе. В регистре сведений ШтрихкодыНоменклатуры для нашей проблемной номенклатуры была сохранена запись со штрихкодом, который не соответствует стандарту EAN-13. Такое часто случается при переносе данных из старых систем, где не было строгой валидации форматов. В нашем примере, если декодировать строку "NDY1NzgyMTAzMDE2NQ==" из Base64, мы получим "4657821030165".
Автоматическое добавление в чек. Современные конфигурации 1С при формировании чека автоматически ищут штрихкод для каждой товарной позиции и добавляют его в данные для ККМ. Это сделано для соответствия требованиям законодательства и корректной передачи данных о товаре. Система находит наш "кривой" штрихкод и включает его в XML-пакет, предварительно закодировав в Base64.
Неверная интерпретация драйвером. Интеграционный компонент (специальная "прослойка" между 1С и драйвером АТОЛ) получает эти данные. Он анализирует содержимое тега GoodCodeData, видит, что полученное значение не является стандартным штрихкодом EAN-13, и делает неверный вывод: он решает, что это некий "код товара", полученный от сканера, и классифицирует его как код маркировки.
Ошибка на кассе. Драйвер отправляет на кассу команду регистрации товарной позиции, передавая в ней тот самый код маркировки. Прошивка ККМ (особенно если она устаревшая, например, на платформе 2.5) не готова к приему таких данных или не поддерживает данный формат. В результате касса прерывает операцию и возвращает ошибку «Не поддерживается в данной версии».
Таким образом, проблема не в кассе и не в конфигурации 1С как таковой, а в некорректных исходных данных, которые запускают целую цепочку неверных интерпретаций.
Пошаговое решение проблемы
Теперь, когда мы понимаем причину, исправить ошибку достаточно просто. Выполним следующие действия:
Найдите проблемную номенклатуру. В исходной ситуации это было сделано опытным путем — поочередным удалением позиций из чека.
Откройте карточку номенклатуры. Перейдите к списку штрихкодов этого товара. Обычно это можно сделать по ссылке "Штрихкоды" на панели навигации в карточке. Также можно открыть напрямую регистр сведений ШтрихкодыНоменклатуры и установить отбор по проблемному товару.
Найдите и исправьте некорректный штрихкод. Внимательно просмотрите список штрихкодов. Вы увидите запись, которая не соответствует стандартному формату (например, имеет неверную длину или содержит буквы). В нашем случае это был штрихкод "4657821030165".
Удалите или замените штрихкод. Самый простой способ — удалить эту запись. Если штрихкод все же нужен для учета, то сгенерируйте новый, корректный, с помощью стандартной функции 1С или введите правильный заводской штрихкод.
Проверьте результат. Попробуйте снова пробить чек с этой позицией. Поскольку система больше не найдет некорректный штрихкод, она не будет отправлять в ККМ лишние данные, и чек успешно напечатается.
Как избежать подобных проблем в будущем
Данная ситуация — хороший урок, который помогает понять важность чистоты данных и своевременного обновления ПО. Чтобы минимизировать риски в будущем, рассмотрим несколько рекомендаций.
Проверяйте данные при миграции. При переходе со старых учетных систем на новые всегда проводите аудит и валидацию переносимых данных. Особое внимание уделяйте справочникам, таким как номенклатура и контрагенты, а также связанным регистрам, как в нашем случае — штрихкодам. Используйте обработки для проверки штрихкодов на соответствие формату, длине и контрольной сумме.
Своевременно обновляйте прошивку ККМ. Производители кассовой техники регулярно выпускают обновления прошивок, которые исправляют ошибки, добавляют поддержку новых форматов фискальных данных (например, ФФД 1.2) и требований законодательства (маркировка). Работа на актуальной прошивке (например, платформа 5.0 для АТОЛ) снижает вероятность столкнуться с ошибками совместимости.
Помните о других причинах ошибки. Ошибка «Не поддерживается в данной версии» является достаточно общей. Она также может возникать из-за несоответствия версии драйвера ККМ и версии прошивки. Например, новые драйверы АТОЛ (версии 10.10.3.0 и выше) могут не поддерживать кассы на старой платформе 2.5. Всегда проверяйте совместимость компонентов перед обновлением.
Внимательное отношение к данным и техническому состоянию оборудования поможет избежать неожиданных сбоев в работе и сэкономить время на диагностике и устранении подобных проблем.