Как исправить ошибку [148] Ошибка программирования реквизита 2108 при пробитии дробного маркированного товара через ККТ АТОЛ в 1С?

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

При работе с контрольно-кассовой техникой (ККТ) АТОЛ в связке с программой 1С, особенно при продаже маркированных товаров дробными количествами, пользователи могут столкнуться с ошибкой "[148] Ошибка программирования реквизита 2108". Эта проблема особенно актуальна для таких товаров, как разливное автомасло. Давайте рассмотрим эту ошибку подробнее, выясним ее причины и разберем по шагам, как ее устранить.

Понимание реквизита 2108 и требований ФФД 1.2

Прежде чем углубляться в решение, важно понять, что такое реквизит 2108 и почему он является критически важным. Реквизит 2108, также известный как "мера количества предмета расчета", является обязательным полем в фискальных документах, формируемых в соответствии с форматом фискальных данных (ФФД) версии 1.2. Этот реквизит предназначен для указания единицы измерения товара, например, "шт.", "кг", "л", "м" и так далее. Для маркированных товаров, вне зависимости от того, продаются они штучно или дробно, его заполнение строго обязательно.

Налоговая служба, начиная с 9 ноября 2023 года, прекратила принимать кассовые чеки, сформированные по ФФД 1.2 без заполненного тега 2108. Игнорирование этого требования может привести к административным штрафам. Таким образом, появление ошибки "[148] Ошибка программирования реквизита 2108" означает, что в фискальном чеке либо не указана единица измерения, либо она указана некорректно или в неподдерживаемом формате.

Первичная диагностика: проверка базовых настроек

Когда возникает ошибка программирования реквизита 2108, первым делом необходимо убедиться в корректности базовых настроек. Часто проблема кроется в очевидных, но упущенных из виду деталях.

  1. Проверка единицы измерения товара в 1С.

    Для разливных товаров, таких как автомасло, крайне важно правильно указать единицу измерения. По умолчанию, многие товары могут иметь единицу "шт." (штука). Однако для разливных жидкостей это будет некорректно. Мы должны использовать единицу измерения, которая отражает дробное количество, например, "литр" или "л".

    Наши коллеги столкнулись с проблемой, когда при использовании "шт." для разливного автомасла возникала ошибка. Однако переход на "литр" также не сразу решил проблему, что указывает на более глубокие причины, которые мы рассмотрим далее. Тем не менее, это первый и обязательный шаг.

  2. Проверка настройки драйвера ККТ на передачу тега 2108.

    В некоторых случаях драйвер ККТ может иметь специальный флаг или настройку, отвечающую за передачу тега 2108. Мы можем попытаться найти эту опцию в настройках драйвера АТОЛ (обычно это утилита "Настройка свойств" драйвера) и убедиться, что она активна. Хотя в нашем случае это не привело к полному решению (сообщение 8), это важный шаг для исключения простой недонастройки драйвера. Часто проблема не в самом факте передачи тега, а в корректности передаваемых данных.

Комплексная стратегия обновления программного обеспечения

Одна из наиболее частых причин возникновения подобных ошибок — использование устаревших версий программного обеспечения. Требования к маркировке и ФФД 1.2 постоянно обновляются, и производители ККТ, драйверов и программ 1С выпускают соответствующие обновления. Мы должны убедиться, что все компоненты нашей системы актуальны.

  1. Обновление прошивки ККТ АТОЛ.

    Прошивка фискального регистратора — это его "мозг". Устаревшая прошивка может не поддерживать новые требования ФФД 1.2 или некорректно обрабатывать тег 2108. В нашем случае, первоначально использовалась прошивка 5.12, затем 5.8.12, которая также была названа устаревшей. Мы должны обновить прошивку ККТ АТОЛ до самой последней актуальной версии, например, 5.8.20 или новее, если таковая доступна. Обновление прошивки обычно выполняется через утилиты от производителя ККТ.

  2. Обновление драйвера ККТ АТОЛ.

    Драйвер ККТ — это "переводчик" между программой 1С и физическим фискальным регистратором. Он отвечает за правильное формирование команд и передачу данных в ККТ. Драйверы АТОЛ версии 10.10.6.0 и выше уже содержат необходимые изменения для поддержки ФФД 1.2 и корректной работы с тегом 2108. Мы должны скачать и установить последнюю версию драйвера с официального сайта АТОЛ.

  3. Обновление компоненты 1С для работы с ККТ.

    Компонента 1С (обычно внешняя обработка или библиотека) отвечает за взаимодействие непосредственно из программы 1С с драйвером ККТ. Если драйвер и прошивка обновлены, но компонента 1С осталась старой, она может передавать данные в устаревшем формате или неверно интерпретировать ответы драйвера. Мы должны убедиться, что компонента 1С, используемая для связи с ККТ АТОЛ, также соответствует последней версии, которая поставляется вместе с актуальным драйвером или доступна на сайте АТОЛ. Версия компонента 10.10.6.0, упомянутая в логе, должна быть актуальной, но важно убедиться, что она корректно интегрирована и используется программой 1С.

Глубокий анализ: несоответствие версии ФФД

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

  1. Проверка версии ФФД регистрации ККТ.

    Эту информацию можно получить из регистрационной карточки ККТ или в личном кабинете налогоплательщика на сайте ФНС. Убедитесь, что ККТ зарегистрирована на ФФД 1.2.

  2. Проверка настройки ФФД в 1С.

    В программе 1С, в разделе "Администрирование" -> "Подключаемое оборудование" -> "ККТ с передачей данных", мы должны открыть настройки нашего фискального регистратора и убедиться, что там также указана версия ФФД 1.2. Если обнаружено несоответствие, необходимо привести настройки в 1С в соответствие с регистрацией ККТ.

Ключевой тест: "Тест драйвера" против 1С

Одно из самых ценных наблюдений в ходе обсуждения этой проблемы — это разница в поведении между "Тестом драйвера" АТОЛ и работой через компоненту 1С. Когда наши коллеги обновили прошивку и драйверы ККТ до последних версий, они обнаружили, что чеки на разливные автомасла успешно пробиваются через "Тест драйвера" АТОЛ, но продолжают выдавать ошибку "[148] Ошибка программирования реквизита 2108" при попытке пробития через 1С. Это наблюдение является критически важным, поскольку оно сужает область поиска проблемы.

Последствия этого теста

  1. Исключаем аппаратные проблемы ККТ: Если "Тест драйвера" работает корректно, это означает, что сам фискальный регистратор, его прошивка и установленный драйвер способны правильно обрабатывать тег 2108 и формировать чеки с дробными маркированными товарами. Проблема не в "железе" или базовом ПО ККТ.
  2. Фокусируемся на интеграции 1С: Разница в поведении указывает на то, что проблема находится в связке "1С -> Компонента 1С -> Драйвер ККТ". Либо компонента 1С неверно формирует данные для передачи драйверу, либо 1С передает некорректные данные самой компоненте.

Фокусировка на роли компоненты 1С

Если "Тест драйвера" работает, мы должны внимательно изучить, как именно программа 1С (в нашем случае 1С АА 4.1, основанная на УНФ) взаимодействует с драйвером ККТ. Компонента 1С должна:

  1. Корректно передавать меру количества (тег 2108): Убедитесь, что в структуре данных, которую 1С передает для формирования чека, мера количества для разливного автомасла указана в правильном формате и значении (например, "л" или "10"). Важно, чтобы это был не просто текст, а числовой код единицы измерения, соответствующий стандартам.
  2. Обрабатывать особенности маркированных товаров: Для маркированных товаров, особенно при частичном выбытии (розлив), 1С должна не только передавать код маркировки (хотя для разливных масел это код бочки), но и корректно формировать информацию о количестве выбывшего товара.
  3. Логирование: Внимательно изучите логи компоненты 1С (как в сообщении 1: файл fptr1C.log). Строки, предшествующие ошибке, могут содержать полезную информацию о том, какие данные пыталась передать 1С и что вызвало сбой. Мы ищем несоответствия или пустые значения в полях, относящихся к единице измерения или количеству.

Особенности маркировки автомобильных масел и жидкостей

Проблема, которую мы рассматриваем, тесно связана с системой маркировки "Честный Знак". Важно знать следующие аспекты:

  1. Сроки обязательной маркировки: С 1 сентября 2025 года вводится обязательная маркировка автомобильных жидкостей и смазочных масел. Розничная продажа моторных масел с 1 апреля 2026 года будет происходить уже с учетом всех правил маркировки. Даже если сейчас для автомасла маркировка еще не обязательна, требования к ФФД 1.2 и тегу 2108 уже действуют.
  2. Частичное выбытие из оборота: "Честный Знак" утверждает, что разливное автомасло можно выводить частично из оборота через чеки ККТ. Это означает, что не требуется никаких дополнительных изменений в бизнес-процессе; проблема чисто техническая, связанная с корректной передачей данных. При продаже на розлив из бочки, ККТ должна указывать код маркировки бочки и объем реализованного масла.
  3. Разрешительный режим: С 1 апреля 2024 года введен разрешительный режим продажи маркированных товаров. Это означает, что на кассе происходит проверка кода маркировки в режиме онлайн. Если проверка не пройдена (например, код невалиден или товар уже выведен из оборота), продажа будет запрещена. Программы 1С:РМК, 1С:Розница и 1С:УНФ (на которой основана 1С АА) уже готовы к работе с этим режимом.

Практические шаги и рекомендации

Обобщая все вышесказанное, предлагаем комплексный план действий для устранения ошибки программирования реквизита 2108:

  1. Полное обновление всего стека ПО:
    • Обновим прошивку ККТ АТОЛ до последней актуальной версии (например, 5.8.20 или новее).
    • Обновим драйвер ККТ АТОЛ до версии 10.10.6.0 или выше.
    • Убедимся, что компонента 1С для работы с ККТ АТОЛ также является актуальной и соответствует версии драйвера. Возможно, потребуется переустановка или обновление внешней обработки в 1С.
  2. Тщательная проверка настроек ФФД:
    • Проверим регистрационные данные ККТ в ФНС – должна быть указана версия ФФД 1.2.
    • Проверим настройки подключаемого оборудования в 1С – там также должна быть установлена версия ФФД 1.2.
  3. Корректная настройка единицы измерения в 1С:
    • Для разливного автомасла установим единицу измерения "литр" или "л". Убедимся, что это не просто текстовое наименование, а правильно сопоставленный справочник ЕИ, который программа 1С может передать в ККТ в виде числового кода (например, код 10 для литров).
    • Также проверим все коды единиц измерения на предмет наличия нецифровых символов или пробелов, которые могут вызывать ошибки.
  4. Анализ логов и данных, передаваемых из 1С:
    • Включим максимально подробное логирование как в драйвере ККТ, так и в компоненте 1С (fptr1C.log).
    • В логах будем искать момент формирования чека и передачи данных. Обратим внимание на значения, связанные с тегом 2108 (UnitOfMeasurement, количество) и кодом маркировки.
    • Если есть возможность, используем отладчик 1С, чтобы посмотреть, какие именно данные формируются и передаются компоненте перед вызовом метода печати чека. Возможно, в какой-то момент данные для тега 2108 теряются или формируются неверно внутри 1С или ее компоненты.
  5. Консультация с разработчиком 1С или АТОЛ:

    Если после всех этих шагов проблема сохраняется, и мы точно уверены, что "Тест драйвера" работает корректно, а 1С выдает ошибку, это однозначно указывает на проблему в реализации компоненты 1С или специфике конфигурации. В таком случае, мы рекомендуем обратиться к поддержке разработчика вашей конфигурации 1С (в нашем случае 1С АА, основанной на УНФ) или к специалистам АТОЛ для более глубокой диагностики и возможного исправления кода.

  6. Формирование чеков коррекции:

    Если до устранения ошибки были пробиты чеки без корректного тега 2108, ФНС рекомендует формировать чеки коррекции для исправления этих нарушений и избежания штрафов.

Решение проблемы "[148] Ошибка программирования реквизита 2108" требует системного подхода и поэтапной проверки всех компонентов: от прошивки ККТ до настроек в 1С. Учитывая, что "Тест драйвера" показал работоспособность ККТ, ключевой фокус должен быть на правильности формирования и передачи данных из вашей конфигурации 1С. В качестве альтернативного решения можно использовать инструмент для независимой печати чеков на ККМ АТОЛ напрямую через драйвер.

← На главную