Как исправить ошибку FFFFFFF8h No XML attribute AdvancePayment при печати чеков на ККТ Штрих-М в 1С

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

При обновлении прошивки контрольно-кассовой техники (ККТ) линейки Штрих-М (например, Штрих-М-01Ф, Штрих-М-02Ф) и переходе на драйверы с поддержкой новых форматов фискальных данных пользователи конфигураций 1С (в частности, Управление производственным предприятием, Комплексная автоматизация 1.1 или Управление торговлей 10.3) часто сталкиваются с ошибкой: FFFFFFF8h, No XML attribute AdvancePayment. При этом тест устройства в торговом оборудовании проходит успешно, но любая попытка пробить фискальный чек прерывается аварийно.

Разберем детально механизм возникновения данной неполадки и рассмотрим все способы ее устранения.

Причины возникновения ошибки

Проанализируем техническую сторону взаимодействия 1С с кассовым аппаратом. Ошибка возникает не на самом фискальном накопителе, а на уровне внешней компоненты драйвера (SMDrvFR1CLib20.dll), предоставляемой производителем «Штрих-М»:

  1. Несоответствие ревизии XML-пакета чека: В новых версиях драйвера ККТ реализована проверка структуры XML по актуальным стандартам «1С:Совместимо». В узле оплат <Payments> драйвер ожидает строго определенный набор атрибутов, включая AdvancePayment (сумма предоплаты / зачета аванса). Если используемая обработка обслуживания (ShtrihMkkt.epf) формирует XML по старой схеме без этого реквизита, парсер драйвера отклоняет команду печати.
  2. Кэширование устаревшей библиотеки драйвера: Платформа 1С сохраняет ранее загруженные внешние компоненты в каталог профиля пользователя. В результате 1С может обращаться к старой копии SMDrvFR1CLib20.dll, даже если в операционную систему установлен новый релиз драйвера.
  3. Переход на новый формат фискальных данных (ФФД): При смене прошивки кассы на ФФД 1.05/1.2 меняются команды фискализации. У Штрих-М предусмотрено несколько команд регистрации: от базовых Sale / ReturnSale до расширенной Операцияv2 (поддерживающей признаки способа и предмета расчета, а также наименования длиной до 128 символов). Если касса и драйвер переключены на новый режим, а внешняя обработка не передает обязательные теги, печать блокируется.

Способ 1. Обновление внешней обработки обслуживания из каталога TradeWareEpf

Самый надежный способ решить проблему — использовать актуальную внешнюю обработку обслуживания, входящую в состав обновлений конфигурации 1С. Выполним следующие шаги:

  1. Перейдем в каталог установленного актуального шаблона конфигурации (например, каталог поставки обновления УПП или УТ).
  2. Найдем подкаталог TradeWareEpf.
  3. Скопируем из него актуальный файл внешней обработки для ККТ с передачей данных (ShtrihMkkt.epf).
  4. Откроем 1С в режиме Предприятие, перейдем в меню Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  5. В списке обработок обслуживания заменим старый файл на новый, обновим параметры кассы и заново сохраним настройки.

Способ 2. Очистка кэша внешних компонент 1С

Если обновление обработки не помогло или 1С продолжает загружать устаревшую библиотеку, выполним полную очистку кэша внешних компонент:

  1. Закроем все запущенные сеансы «1С:Предприятие» на рабочем месте.
  2. Перейдем в каталог пользователя Windows: %APPDATA%\1C\1Cv8\ExtCompT\ (а также проверьте каталог %APPDATA%\1C\1Cv82\ExtCompT\, если конфигурация работает в режиме совместимости).
  3. Найдем и удалим файл библиотеки SMDrvFR1CLib20.dll.
  4. Запустим 1С от имени администратора, откроем настройки торгового оборудования и нажмем кнопку Тест устройства или Функции — Переустановить драйвер. Платформа повторно скопирует и зарегистрирует актуальную библиотеку из каталога установленного драйвера «Штрих-М».

Способ 3. Ручная корректировка формирования XML в обработке ShtrihMkkt.epf

В ситуациях, когда конфигурация сильно доработана или используется нестандартная внешняя обработка, можно вручную скорректировать модуль обработки в конфигураторе. Разберем, как добавить недостающие атрибуты в XML-структуру чека.

Откроем обработку ShtrihMkkt.epf в конфигураторе, найдем процедуру формирования узла оплат (обычно функция СформироватьXMLПакетаЧека или модуль объекта) и проанализируем формирование тега Payments:


// Пример доработки формирования блока оплат в XML
ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");

// Обязательные атрибуты для современных версий драйвера
ЗаписьXML.ЗаписатьАтрибут("Cash", Формат(СуммаНаличными, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0"));
ЗаписьXML.ЗаписатьАтрибут("ElectronicPayment", Формат(СуммаБезналичными, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧГ=0"));
ЗаписьXML.ЗаписатьАтрибут("AdvancePayment", "0.00");
ЗаписьXML.ЗаписатьАтрибут("Credit", "0.00");
ЗаписьXML.ЗаписатьАтрибут("CashProvision", "0.00");

ЗаписьXML.ЗаписатьКонецЭлемента(); // Payments

Если в чеке присутствуют реальные суммы предоплаты или постоплаты, подставим соответствующие переменные вместо нулевых значений. Сохраним обработку и загрузим ее в справочник торгового оборудования.

Способ 4. Использование альтернативного драйвера или откат версии

Если оперативная доработка кода невозможна, а чеки необходимо пробивать срочно, рассмотрим временный вариант решения:

  1. Удалим текущую сборку драйвера «Штрих-М» через панель управления Windows.
  2. Установим предыдущую стабильную версию драйвера (например, из линейки 4.13.x или более раннюю сборку 4.14), в которой парсер XML-пакетов не требовал обязательного наличия атрибута AdvancePayment при его нулевом значении.
  3. Выполним повторный тест связи с ККТ из 1С.

После выполнения указанных действий ошибка FFFFFFF8h будет устранена, наименования товаров начнут корректно печататься на чековой ленте и без искажений передаваться оператору фискальных данных (ОФД).

← На главную