Как включить передачу тега 2108 (мера количества) для касс АТОЛ в 1С?

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

С переходом на формат фискальных данных ФФД 1.2 многие пользователи кассового оборудования АТОЛ столкнулись с ошибками при регистрации чеков. Одной из самых частых проблем стала нехватка обязательного тега 2108 («Мера количества предмета расчета»). ОФД начали возвращать ошибки, а в чеках может появляться предупреждение о необходимости передачи этого реквизита. Давайте подробно разберем, как исправить эту ситуацию программно и на уровне настроек оборудования.

Суть проблемы и технические требования

Тег 2108 обязателен для всех товаров в ФФД 1.2. Он указывает, в чем измеряется товар: в штуках, килограммах, литрах и так далее. Если ваша конфигурация 1С или драйвер ККТ устарели, этот тег просто не попадает в структуру XML, которую 1С отправляет на кассу. Для корректной работы нам необходимо обеспечить выполнение четырех условий:

  1. Касса должна быть прошита под ФФД 1.2 (версия прошивки не ниже 5.8.100). Также проверьте, настроен ли разрешительный режим для работы с Честным знаком.
  2. Используется драйвер АТОЛ версии не ниже 10.9.5.0 (рекомендуется 10.10.x).
  3. В 1С установлена современная интеграционная компонента с поддержкой ФФД 1.2.
  4. Программа 1С корректно формирует XML-пакет, включая в него атрибут MeasureOfQuantity.

Шаг 1. Настройка драйвера и оборудования в 1С

Прежде чем приступать к правке кода, проанализируем настройки подключения. Часто проблема решается простым обновлением версии драйвера внутри 1С. Рассмотрим порядок действий:

  1. Зайдем в раздел Администрирование — Подключаемое оборудование.
  2. Откроем карточку нашей ККТ и нажмем Настроить.
  3. Убедимся, что в поле «Драйвер оборудования» выбрана актуальная версия, например, «АТОЛ:ККТ с передачей данных в ОФД 10.Х (ФФД 1.2)». Обратите внимание, что версия без пометки «ФФД 1.2» может работать по старому протоколу и не передавать нужные теги.
  4. Проверим ревизию интерфейса. Для передачи тега 2108 ревизия должна быть не ниже 3004. Посмотреть ее можно в логе теста устройства.

Шаг 2. Программное включение тега в управляемых формах

Если обновление драйверов не помогло (особенно в кастомизированных конфигурациях), нам придется вмешаться в формирование XML-пакета. Разберем, где именно это происходит. Основная логика обычно сосредоточена в общем модуле МенеджерОборудованияВызовСервера (или аналогичном в вашей версии БПО).

Нам необходимо найти функцию СформироватьXMLПакетДляФискализацияЧека и убедиться, что для каждой позиции чека добавляется атрибут MeasureOfQuantity.

Рассмотрим пример кода, который решает эту задачу:


// В цикле перебора товарных позиций чека
Если ПараметрыФискализации.РевизияИнтерфейса >= 3004 Тогда
    // Получаем значение меры количества по коду единицы измерения
    МераКоличестваПредметаРасчета = МенеджерОборудованияКлиентСервер.МераКоличестваПредметаРасчетаПоКодуЕдиницыИзмерения(ТекущаяПозиция.КодЕдиницыИзмерения);
    
    // Преобразуем перечисление в числовой код для ККТ
    КодМерыККТ = МенеджерОборудованияКлиентСервер.КодМерыКоличестваПредметаРасчетаККТ(МераКоличестваПредметаРасчета);
    
    // Записываем атрибут в XML
    ЗаписьXML.ЗаписатьАтрибут("MeasureOfQuantity", XMLСтрока(КодМерыККТ));
КонецЕсли;

Проанализируем этот участок. Система берет код единицы измерения (например, «796» для штук) и сопоставляет его с внутренним числовым кодом ФФД. Для «штук» это значение 0, для «килограммов» — 11.

Шаг 3. Реализация для обычных форм (на примере УТ 10.3)

В старых конфигурациях на обычных формах (УТ 10.3, УПП) алгоритм сопоставления может работать некорректно из-за путаницы в справочниках. Для отладки логики ФФД 1.2 можно использовать эмулятор ККТ ФФД 1.2 для обычных форм. Выясним причину: часто в классификаторе единиц измерения коды ОКЕИ содержат лишние пробелы (например, "796 " вместо "796"), из-за чего сопоставление возвращает значение 255 (Иные единицы измерения).

Для исправления ситуации в общем модуле РозничныеПродажи можно доработать функцию определения кода:


Функция КодЕдиницыИзмеренияПараметраЧека(ЕдиницаИзмерения) Экспорт
    КодЕдиницыИзмерения = "";
    Если ТипЗнч(ЕдиницаИзмерения) = Тип("СправочникСсылка.КлассификаторЕдиницИзмерения") Тогда
        // Обязательно используем СокрЛП для удаления невидимых пробелов
        КодЕдиницыИзмерения = СокрЛП(ЕдиницаИзмерения.Код);
    КонецЕсли;
    
    // Принудительное сопоставление для популярных единиц, если коды не заполнены
    Если ПустаяСтрока(КодЕдиницыИзмерения) Тогда
        Если Найти(НРег(ЕдиницаИзмерения.Наименование), "шт") > 0 Тогда
            КодЕдиницыИзмерения = "796";
        КонецЕсли;
    КонецЕсли;
    
    Возврат КодЕдиницыИзмерения;
КонецФункции

Шаг 4. Соответствие кодов меры количества

Важно понимать, какие числовые значения ожидает драйвер АТОЛ в атрибуте MeasureOfQuantity. Ниже приведен список основных соответствий:

Важный нюанс: Если вы передаете значение 255, ОФД примет чек, но это может вызвать вопросы у налоговой при регулярной торговле штучным товаром. Старайтесь всегда сводить данные к коду 0 для штук.

Шаг 5. Исправление проблемы с печатью чека (Тег 1208)

Иногда после обновления драйверов возникает побочный эффект: данные в ОФД уходят, тег 2108 на месте, но бумажный чек на кассе не печатается. Рассмотрим причину. В новых версиях БПО параметр Электронно в методе СформироватьЧек отвечает за отправку только электронного чека (тег 1208). Если в вашем коде этот флаг ошибочно установлен в Истина (например, из-за путаницы с признаком безналичной оплаты), касса не выдаст бумагу.

Проверьте вызов метода ПодключаемоеОборудованиеРТ.СформироватьЧек и убедитесь, что параметр Электронно передается корректно. Если клиенту нужен бумажный чек, этот параметр должен быть Ложь.

Диагностика через логи драйвера

Если тег по-прежнему не передается, проанализируем логи драйвера АТОЛ. Найдите файл fptr10.log (обычно в папке пользователя или в папке с драйвером). Ищите в нем строку LIBFPTR_PARAM_MEASUREMENT_UNIT. Если вы видите, что 1С передает это значение, но касса выдает ошибку, значит проблема в прошивке ККТ или в том, что касса зарегистрирована под ФФД 1.05, который не поддерживает этот тег.

Таким образом, решение проблемы с тегом 2108 всегда кроется в связке «Корректный код ОКЕИ — Актуальный драйвер (интеграционная компонента) — Правильное формирование XML». Выполнив предложенные программные доработки, вы обеспечите полное соответствие ваших чеков требованиям законодательства.

← На главную