Как вывести серию и гарантийный срок номенклатуры в фискальный чек в 1С:Управление торговлей 11.5?

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

В конфигурации «1С:Управление торговлей» редакции 11.5 пользователи и разработчики нередко сталкиваются с необходимостью напечатать на кассовой ленте дополнительную сервисную информацию: серийный номер проданного товара (S/N) и срок его гарантийного обслуживания, заданный через дополнительные реквизиты. Однако встроенный визуальный редактор шаблонов фискальных чеков, привычный пользователям других решений (например, 1С:Розницы), в УТ 11 отсутствует. Разберем, как устроена печать чеков в УТ 11.5, какие ограничения накладывают требования законодательства и драйверы ККТ, а также какими способами можно реализовать требуемый вывод информации.

Особенности архитектуры печати чеков и ограничения ФФД

Проанализируем сначала причины, по которым в УТ 11.5 нельзя просто так настроить произвольный шаблон в пользовательском интерфейсе:

  1. Отсутствие пользовательского редактора шаблонов: Вся компоновка фискального чека формируется программно с помощью подсистемы «Библиотека подключаемого оборудования» (БПО) согласно жестким правилам форматов фискальных документов (ФФД).
  2. Ограничение тега 1030: Согласно требованиям ФФД, длина наименования предмета расчета (тег 1030) ограничена 128 символами. Если поместить длинное торговое название товара, серийный номер и гарантию в одну строку, драйвер ККТ может аварийно завершить печать или обрезать текст.
  3. Запрет произвольных нефискальных строк внутри товарной части: Большинство онлайн-касс и современных драйверов (особенно при работе по ФФД 1.2) не поддерживают печать произвольного текста между фискальными строками позиций. Нефискальные строки допускаются в клише (шапке) или подвале документа.

Способ 1. Программная конкатенация наименования через расширение конфигурации

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

Разберем по шагам логику решения:

  1. Перехватываем процедуру подготовки данных для фискализации в документе ЧекККМ или общем модуле формирования фискального пакета БПО.
  2. Для каждой строки табличной части с товарами считываем указанную серию.
  3. С помощью функций подсистемы БСП извлекаем значение дополнительного реквизита «Срок гарантии» из карточки номенклатуры.
  4. Модифицируем наименование позиции перед передачей в структуру для ККТ, не забывая обрезать строку до 128 символов.

Посмотрим на пример программной реализации модификации наименования позиции:


// Сформируем итоговую строку для фискального регистратора
НаименованиеБазовое = СтрокаТовара.Номенклатура.НаименованиеПолное;
Если ПустаяСтрока(НаименованиеБазовое) Тогда
    НаименованиеБазовое = СтрокаТовара.Номенклатура.Наименование;
КонецЕсли;

ДополнительныеДанные = "";

// Проверяем заполнение серии
Если ЗначениеЗаполнено(СтрокаТовара.Серия) Тогда
    ДополнительныеДанные = ДополнительныеДанные + " S/N: " + СокрЛП(СтрокаТовара.Серия.Наименование);
КонецЕсли;

// Считываем дополнительный реквизит гарантии
СрокГарантии = "";
СвойствоГарантия = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Срок гарантии");
Если ЗначениеЗаполнено(СвойствоГарантия) Тогда
    СтрокаДопРеквизита = СтрокаТовара.Номенклатура.ДополнительныеРеквизиты.Найти(СвойствоГарантия, "Свойство");
    Если СтрокаДопРеквизита <> Неопределено И ЗначениеЗаполнено(СтрокаДопРеквизита.Значение) Тогда
        СрокГарантии = СокрЛП(СтрокаДопРеквизита.Значение);
        ДополнительныеДанные = ДополнительныеДанные + " Гар.: " + СрокГарантии;
    КонецЕсли;
КонецЕсли;

// Конкатенируем и жестко ограничиваем длину по формату ФФД (тег 1030)
ИтоговоеНаименование = СокрЛП(НаименованиеБазовое + ДополнительныеДанные);
СтрокаЧека.Наименование = Лев(ИтоговоеНаименование, 128);

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

Способ 2. Модификация XML-пакета чека ККТ

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

Выясним причину, по которой этот метод требует предварительного тестирования: поведение сильно различается в зависимости от производителя кассы (АТОЛ, Штрих-М и др.). Некоторые кассы игнорируют вложенные текстовые строки, а другие выдают ошибку синтаксиса пакета. Рекомендуется протестировать этот вариант в демо-режиме ККТ перед запуском в рабочую базу.

Способ 3. Печать дополнительного нефискального слипа или гарантийного талона

Если серийные номера и гарантийные обязательства содержат большой объем текста, превышающий 128 символов, наименование в фискальном чеке обрезать не рекомендуется. В таком случае разберем два надежных альтернативных решения:

  1. Печать нефискального документа на ККТ: Сразу после успешного завершения команды печати фискального чека вызывается метод печати произвольного нефискального текста через БПО. На ленту кассы выводится отрывной талон с перечнем всех позиций, их серийными номерами и условиями гарантии. Это не нарушает требования ФЗ-54 и не подвержено ограничениям тегов ФФД.
  2. Формирование гарантийного талона (товарного чека): Создание дополнительной внешней печатной формы к документу ЧекККМ или Реализация товаров и услуг. Документ выводится на формат А4 или термопринтер этикеток/документов, где указываются полные гарантийные обязательства, место подписи покупателя и отметки сервисного центра.
← На главную