Почему в чеках ККМ не печатается наименование номенклатуры при работе с 1С:Розница и ККТ ШТРИХ-М?

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

При автоматизации розничной торговли и интеграции учетных систем (например, при переносе данных из «1С:Предприятие 7.7» в «1С:Розница 2.2») специалисты нередко сталкиваются с ситуацией, когда документ «Чек ККМ» на экране заполнен корректно, но на бумажной чековой ленте или в личном кабинете ОФД наименование товара оказывается пустым. Разберем по шагам архитектуру передачи фискальных данных, выясним причину такого поведения оборудования и рассмотрим практические способы устранения неполадки.

Причины отсутствия наименования товара в чеке и данных ОФД

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

Проанализируем основные факторы, приводящие к потере наименования:

  1. Неполное заполнение реквизитов при программном создании документов: при создании документов «Чек ККМ» внешними обработками типовые обработчики событий формы не вызываются. Если служебные поля строки или карточки номенклатуры (вид, тип номенклатуры, признак предмета расчета) не заполнены, процедура формирования фискального пакета может сформировать пустой тег наименования.
  2. Использование устаревших версий драйвера ККТ или прошивки: при несовпадении версий драйвера и прошивки кассы регистрация позиций может обрабатываться некорректно. В ряде старых релизов драйверов ШТРИХ-М при определенных ошибках длинные строки не обрезались до лимита в 128 символов, а очищались полностью.
  3. Спецсимволы и непечатаемые знаки: при переносе строковых данных из сторонних систем в наименование могут попадать управляющие символы (переводы строк, табуляции, нулевые байты), которые ломают сериализацию структуры XML.
  4. Некорректная настройка шаблона чека ККМ: если в справочнике «Шаблоны чеков ККМ» поле вывода номенклатуры отключено или переопределено пользовательским реквизитом, физическая печать на ленте может отсутствовать, даже если данные уходят в ОФД.

Анализ формирования фискального XML-пакета в 1С

В типовых конфигурациях на базе БСП и БПО (Библиотеки подключаемого оборудования) отправка чека на фискализацию выполняется через формирование специального XML-пакета в модуле ПодключаемоеОборудованиеУниверсальныйДрайверКлиент. Проверим, как устроен этот механизм в процедуре ФискализацияЧека:


ДанныеЧека = МенеджерОборудованияВызовСервера.ПолучитьXMLПакетДляФискализацияЧека(
    ОбщиеПараметры, 
    ШаблонЧека, 
    СуммаЧека, 
    ШиринаСтроки, 
    НовыйФормат, 
    ВерсияФФД
);

Если НовыйФормат Тогда
    Результат = ОбъектДрайвера.СформироватьЧек(
        ПараметрыПодключения.ИДУстройства, 
        Электронно, 
        ДанныеЧека, 
        НомерЧека, 
        НомерСмены, 
        ФискальныйПризнак, 
        АдресСайтаПроверки
    ); 
Иначе
    Результат = ОбъектДрайвера.СформироватьЧек(
        ПараметрыПодключения.ИДУстройства, 
        Кассир, 
        Электронно, 
        ДанныеЧека, 
        НомерЧека, 
        НомерСмены, 
        ФискальныйПризнак, 
        АдресСайтаПроверки
    ); 
КонецЕсли;

Функция ПолучитьXMLПакетДляФискализацияЧека собирает текстовый XML-документ непосредственно в оперативной памяти с помощью объекта ЗаписьXML и возвращает строку методом ЗаписьXML.Закрыть(). Этот файл не сохраняется на жестком диске во временных папках, поэтому проанализировать его содержимое можно только в режиме отладки конфигуратора либо через системные логи самого драйвера ККМ.

В сформированном XML-пакете обязательно проверяем наличие структуры узлов:

  1. Корневой раздел Positions (позиции чека).
  2. Элементы FiscalString, соответствующие каждой товарной позиции.
  3. Заполненный атрибут Name (наименование предмета расчета, тег 1030).

Если атрибут Name внутри FiscalString заполнен, значит, прикладное решение передало данные корректно, а потеря наименования происходит на стороне драйвера или прошивки кассового аппарата.

Пошаговый алгоритм диагностики и решения проблемы

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

  1. Проверка заполнения справочников: убедимся, что у всей загружаемой номенклатуры заполнены реквизиты ВидНоменклатуры и ТипНоменклатуры (Товар, Услуга, Подакцизный товар). Эти параметры определяют корректную установку признака предмета расчета при фискализации.
  2. Программная очистка строк: в коде загрузки из внешних источников обязательно обрабатываем строковые поля, исключая управляющие символы и ограничивая длину наименования:
    
    // Очистка наименования перед записью в документ
    ЧистоеНаименование = СокрЛП(СтрЗаменить(Выборка.Наименование, Символы.ПС, " "));
    ЧистоеНаименование = СтрЗаменить(ЧистоеНаименование, Символы.ВК, " ");
    ЧистоеНаименование = СтрЗаменить(ЧистоеНаименование, Символы.Таб, " ");
    Если СтрДлина(ЧистоеНаименование) > 128 Тогда
        ЧистоеНаименование = Лев(ЧистоеНаименование, 128);
    КонецЕсли;
    СтрокаТЧ.Номенклатура = НайденнаяНоменклатура;
    СтрокаТЧ.Содержание = ЧистоеНаименование;
    
  3. Тестирование фискализации через драйвер: запустим утилиту «Тест драйвера ККТ» от производителя ШТРИХ-М. Выполним команду прямой фискальной регистрации позиции (с указанием наименования, цены, количества и отдела), после чего закроем чек. Проверим отображение пробитого чека в кабинете ОФД:
    • Если через тест драйвера наименование успешно уходит в ОФД — причину следует искать в формировании XML внутри «1С:Розница».
    • Если наименование отсутствует и при ручной регистрации через утилиту производителя — требуется обновление прошивки ККТ и драйвера.
  4. Проверка шаблона фискального чека: перейдем в раздел Администрирование > Подключаемое оборудование > Шаблоны чеков ККМ. Убедимся, что для используемой кассы назначен шаблон, в котором блок товарных строк содержит вывод элемента Номенклатура или Содержание.
  5. Обновление компонент: обновим конфигурацию «1С:Розница» и драйвер ККТ ШТРИХ-М до актуальных версий, поддерживающих текущие требования ФФД.

Таким образом, комплексная проверка корректности структуры XML через отладку и обновление кассового ПО позволяют гарантировать полное соответствие чеков фискальным стандартам и исключить расхождения между бумажной лентой и сервером ОФД.

← На главную