Почему наименования товаров печатаются на чеке, но не передаются в ОФД?

Программист Торговля и дистрибуция
← На главную

При работе с кассовой техникой (в частности, фискальными регистраторами Штрих-М) и их интеграции с 1С иногда возникает неприятная ситуация: на печатной ленте чека наименования номенклатурных позиций выводятся корректно, однако в личном кабинете Оператора фискальных данных (ОФД) отображается только общая сумма или позиция без названия. Проанализируем причины этой проблемы и рассмотрим способы её устранения.

Главная причина: использование текстовых строк вместо фискальных позиций

Выясним, каким образом данные о проданном товаре попадают в фискальный накопитель и ОФД. Кассовый аппарат принимает от программного обеспечения 1С данные чека в виде определенной структуры команд или XML-пакета.

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

Если в кастомной или устаревшей обработке обслуживания задействован метод драйвера для печати произвольного текста (например, PrintString) или в XML-структуре используются теги TextString, эти данные выводиться на бумажную ленту будут, но Фискальный накопитель их проигнорирует. В результаты фискальный блок отправит в ОФД только количество, сумму и ставку НДС без атрибута наименования предмета расчета (Тэг 1030).

Структура фискального XML-пакета чека

Рассмотрим пример правильного формирования XML-структуры чека, используемой при передаче данных в ККТ через Библиотеку подключаемого оборудования (БПО) или напрямую через драйвер:


<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters PaymentType="1" SenderEmail="info@1c.ru" CustomerEmail="alex2000@mail.ru" CustomerPhone="" AgentCompensation="" AgentPhone=""/>
    <Positions>
        <FiscalString Name="Макароны" Quantity="1" Price="16.75" Amount="16.75" Tax="10"/>
        <FiscalString Name="Томатный сок" Quantity="1" Price="200" Amount="200" Tax="18"/>
        <FiscalString Name="Алкоголь Шампрео 0.7" Quantity="1" Price="455" Amount="455" Tax="18"/>
        <TextString Text="Дисконтная карта: 00002345"/>
        <Barcode BarcodeType="EAN13" Barcode="2000021262157"/>
    </Positions>
    <Payments Cash="471.75" CashLessType1="0" CashLessType2="0" CashLessType3="200"/>
</CheckPackage>

Обратим внимание на разницу между элементами FiscalString и TextString:

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

Способы решения проблемы в 1С

Для восстановления полноценной передачи данных в личный кабинет ОФД разберем следующие шаги:

  1. Проверка вызова методов драйвера ККТ.

    Если используется внешняя обработка печати, убедимся, что для каждой позиции чека вызывается метод регистрации фискальной строки (например, НапечататьФискСтроку или Registration), а не команда печати обычного текста. В передаваемых параметрах метода обязательно должно быть заполнено наименование товара.

  2. Контроль длины и корректности строки наименования.

    Согласно требованиям формата фискальных документов (ФФД), длина реквизита «Наименование предмета расчета» ограничена 128 символами. Если в 1С наименование товара превышает этот лимит или содержит непечатаемые спецсимволы/переносы строк, драйвер кассы может сбросить это поле. Добавим перед отправкой в ККТ программное ограничение длины строки:

    НаименованиеДляККТ = Лев(СокрЛП(Номенклатура.Наименование), 128);
  3. Переход на актуальные механизмы БПО.

    Если кассовая обработка разрабатывалась давно под устаревшие протоколы, рекомендуется отказаться от прямых вызовов OLE/COM-компонент драйвера и перейти на использование стандартной Библиотеки подключаемого оборудования (БПО). В БПО формирование пакета производится вызовом метода СформироватьЧек, что сводит к минимуму ошибки формирования фискальных тегов.

  4. Обновление драйвера и прошивки ККТ.

    Убедимся, что драйвер фискального регистратора и прошивка устройства Штрих-М обновлены до актуальных версий, поддерживающих текущий ФФД (1.05 или 1.2).

← На главную