При обновлении прошивки контрольно-кассовой техники (ККТ) линейки Штрих-М (например, Штрих-М-01Ф, Штрих-М-02Ф) и переходе на драйверы с поддержкой новых форматов фискальных данных пользователи конфигураций 1С (в частности, Управление производственным предприятием, Комплексная автоматизация 1.1 или Управление торговлей 10.3) часто сталкиваются с ошибкой: FFFFFFF8h, No XML attribute AdvancePayment. При этом тест устройства в торговом оборудовании проходит успешно, но любая попытка пробить фискальный чек прерывается аварийно.
Разберем детально механизм возникновения данной неполадки и рассмотрим все способы ее устранения.
Проанализируем техническую сторону взаимодействия 1С с кассовым аппаратом. Ошибка возникает не на самом фискальном накопителе, а на уровне внешней компоненты драйвера (SMDrvFR1CLib20.dll), предоставляемой производителем «Штрих-М»:
<Payments> драйвер ожидает строго определенный набор атрибутов, включая AdvancePayment (сумма предоплаты / зачета аванса). Если используемая обработка обслуживания (ShtrihMkkt.epf) формирует XML по старой схеме без этого реквизита, парсер драйвера отклоняет команду печати.SMDrvFR1CLib20.dll, даже если в операционную систему установлен новый релиз драйвера.Sale / ReturnSale до расширенной Операцияv2 (поддерживающей признаки способа и предмета расчета, а также наименования длиной до 128 символов). Если касса и драйвер переключены на новый режим, а внешняя обработка не передает обязательные теги, печать блокируется.Самый надежный способ решить проблему — использовать актуальную внешнюю обработку обслуживания, входящую в состав обновлений конфигурации 1С. Выполним следующие шаги:
TradeWareEpf.ShtrihMkkt.epf).Если обновление обработки не помогло или 1С продолжает загружать устаревшую библиотеку, выполним полную очистку кэша внешних компонент:
%APPDATA%\1C\1Cv8\ExtCompT\ (а также проверьте каталог %APPDATA%\1C\1Cv82\ExtCompT\, если конфигурация работает в режиме совместимости).SMDrvFR1CLib20.dll.В ситуациях, когда конфигурация сильно доработана или используется нестандартная внешняя обработка, можно вручную скорректировать модуль обработки в конфигураторе. Разберем, как добавить недостающие атрибуты в 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
Если в чеке присутствуют реальные суммы предоплаты или постоплаты, подставим соответствующие переменные вместо нулевых значений. Сохраним обработку и загрузим ее в справочник торгового оборудования.
Если оперативная доработка кода невозможна, а чеки необходимо пробивать срочно, рассмотрим временный вариант решения:
AdvancePayment при его нулевом значении.После выполнения указанных действий ошибка FFFFFFF8h будет устранена, наименования товаров начнут корректно печататься на чековой ленте и без искажений передаваться оператору фискальных данных (ОФД).