При переходе на работу с онлайн-кассой по формату фискальных данных (ФФД) 1.2 в старых конфигурациях, таких как «Управление торговлей 10.3», часто возникает ошибка: «отсутствует обязательный тег (2108 мера количества предмета расчета)» (см. также ошибки маркировки в релизе УТ 10.3.59.2). Разберем, почему она появляется и как ее исправить без глобального обновления конфигурации, используя обработку обслуживания Атол (ДТО 10).
Проблема заключается в том, что старые релизы 1С не формируют данные для этого тега (что часто требует создания чеков коррекции), так как в предыдущих версиях ФФД он не был обязательным. Для ФФД 1.2, особенно при работе с маркированными товарами, этот тег стал критически важным (также помогает устранение ошибки неверной цены или суммы).
Решение проблемы комплексное и состоит из двух ключевых шагов: доработки кода конфигурации и обновления компонента, отвечающего за связь с кассовым аппаратом.
Сначала нам нужно найти место в коде, где 1С готовит данные для отправки на кассовый аппарат. В типовых конфигурациях за это отвечает функция СформироватьXMLПакетДляФискализацияЧека в общем модуле МенеджерОборудованияВызовСервера.
В этой функции необходимо найти цикл, который перебирает товарные позиции чека и формирует для каждой из них XML-узел FiscalString. Внутрь этого узла нам нужно добавить новый атрибут MeasureOfQuantity (тег 2108).
Проанализируем пример кода. В цикле обхода строк табличной части документа найдите место, где записываются атрибуты товарной позиции (Name, Quantity, PriceWithDiscount и т.д.), и добавьте следующую строку:
// ... существующий код записи атрибутов товарной позиции
ЗаписьXML.ЗаписатьАтрибут("PaymentMethod", XMLСтрока(ПараметрыСтроки.СпособРасчета));
ЗаписьXML.ЗаписатьАтрибут("CalculationSubject", XMLСтрока(ПараметрыСтроки.ПризнакПредметаРасчета));
// Добавляем обязательный тег 2108 для ФФД 1.2
ЗаписьXML.ЗаписатьАтрибут("MeasureOfQuantity", XMLСтрока(0));
ЗаписьXML.ЗаписатьНачалоЭлемента("AgentData");
// ... и так далее
Что означает значение "0"?
Тег 2108 передает единицу измерения товара в числовом коде. Вот основные значения:
В большинстве случаев жестко прописанного значения 0 будет достаточно для решения проблемы, если у вас нет весовых или разливных товаров, требующих других кодов.
Одной лишь доработки кода конфигурации может быть недостаточно. За непосредственное взаимодействие 1С с драйвером ККТ отвечает специальная обработка обслуживания (например, ATOLFiscalPrinters_v3.epf). Старые версии этих обработок могут не поддерживать новые теги и структуру данных ФФД 1.2.
Поэтому вторым обязательным шагом является замена вашей текущей обработки обслуживания на более новую версию. В обсуждаемом случае успешным решением стала установка обработки от АТОЛ версии 3.09.
Чтобы обновить обработку:
Сервис -> Торговое оборудование -> Подключение и настройка торгового оборудования).После выполнения этих двух шагов — доработки кода и обновления обработки — проблема с отсутствием тега 2108 должна быть решена. Не забудьте также убедиться, что у вас установлена актуальная версия драйвера ККТ (для АТОЛ рекомендуется версия 10.9 и выше), так как она обеспечивает полную поддержку ФФД 1.2.