Как передать тег 1192 при печати чека возврата на кассах Штрих-М в 1С

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

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

Понимание тега 1192 и требований ФФД

Прежде чем переходить к коду, проанализируем нормативную базу. Согласно форматам фискальных документов (ФФД), тег 1192 является строковым реквизитом длиной до 64 символов. Он поддерживается в версиях ФФД 1.05, 1.1 и 1.2. Важно понимать, что хотя в некоторых старых версиях драйверов бытовало мнение о поддержке этого тега только в ФФД 1.1, на практике современные прошивки «Штрих-М» позволяют передавать его и в версии 1.05.

Выясним причину, по которой этот тег часто не отображается: он может успешно уходить в ОФД, но не выводиться на печать на бумажном носителе из-за настроек самой кассы. Поэтому проверку корректности работы всегда следует начинать с личного кабинета ОФД.

Реализация через Библиотеку подключаемого оборудования (БПО)

В современных конфигурациях 1С (УТ 11, Розница 2.3, БП 3.0), использующих БПО, взаимодействие с кассой происходит через формирование XML-пакета. Рассмотрим, как добавить тег 1192 в этот пакет. В структуре XML за этот тег отвечает атрибут AdditionalAttribute.

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


// Фрагмент формирования XML для БПО
// Тег AdditionalAttribute соответствует ФФД 1192
ЗаписьXML.ЗаписатьАтрибут("AdditionalAttribute", "ФПД: 1234567890");

Если вы используете нетиповую конфигурацию или старую версию БПО, где этот атрибут не предусмотрен в стандартной схеме, вам придется доработать функцию формирования XML. Разберем по шагам, где именно это происходит:

  1. Найдите место в коде, где формируется массив или таблица значений с позициями чека и общими параметрами.
  2. В блок общих параметров документа добавьте поле ДополнительныйРеквизит.
  3. При парсинге этих параметров в XML-строку добавьте условие для записи атрибута AdditionalAttribute.

Реализация для старых конфигураций (УТ 10.3, КА 1.1)

В старых решениях на обычных формах часто используется прямое обращение к COM-объекту драйвера «Штрих-М». В этом случае передача XML не используется, и мы работаем со свойствами драйвера напрямую. Рассмотрим пример кода, который необходимо вставить в обработку обслуживания кассы перед закрытием чека:


// Пример для работы через COM-объект драйвера Штрих-М
// Устанавливаем значение дополнительного реквизита (тег 1192)
ОбъектДрайвера.AdditionalAttribute = "ФПД первичного чека: " + СтрокаФПД;

// Вызываем метод записи атрибута
// В зависимости от версии драйвера метод может называться WriteAdditionalAttribute
Результат = ОбъектДрайвера.WriteAdditionalAttribute();

Если Результат <> 0 Тогда
    Сообщить("Ошибка записи тега 1192: " + ОбъектДрайвера.ResultCodeDescription);
КонецЕсли;

Важный нюанс: запись тега 1192 должна происходить внутри открытого чека, но до вызова методов CloseCheck (ЗакрытьЧек) или FinishFiscalCheck. Если вызвать метод вне контекста открытого фискального документа, драйвер вернет ошибку «Команда не поддерживается в данном состоянии».

Настройка печати в таблицах «Штрих-М»

Если данные уходят в ОФД, но бухгалтер настаивает на наличии строки в бумажном чеке, нам необходимо проверить внутренние настройки ККТ. Выясним, как это сделать через утилиту «Тест драйвера»:

  1. Запустите «Тест драйвера ККТ» и установите связь с кассой.
  2. Перейдите в раздел «Настройка таблиц».
  3. Откройте Таблицу №1 «Настройки».
  4. Найдите параметр «Печать доп. реквизита» (точное название может зависеть от модели, например, «Print additional attribute»).
  5. Установите значение «1» (разрешить печать).
  6. Сохраните изменения и перезагрузите кассу.

Проанализируем ситуацию, если тег все равно не печатается. В некоторых версиях прошивок «Штрих-М» тег 1192 считается чисто «электронным» реквизитом, предназначенным для налоговой, и его принудительный вывод на бумагу требует использования метода печати произвольного текста PrintString сразу после записи атрибута. Для вывода произвольных текстовых строк на кассу в УТ можно воспользоваться обработкой для печати текста на ККМ.

Проверка корректности передачи данных

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

Во-первых, проверьте длину передаваемой строки. Как мы уже упоминали, лимит составляет 64 символа. Если ваша конфигурация пытается передать туда длинное основание (например, «Возврат товара по накладной №... от... по причине...»), драйвер может либо обрезать строку, либо выдать ошибку 0x33 (Некорректные параметры в команде).

Во-вторых, используйте JSON-просмотр чека в личном кабинете ОФД. Это самый надежный метод. Если в структуре JSON присутствует поле с кодом 1192, значит, программная часть на стороне 1С реализована верно, и требования ФНС выполнены, даже если на бумаге этого не видно.

Пример модификации типовой обработки 1С

Рассмотрим пример внесения изменений в типовую функцию СформироватьЧек, если вы используете интеграционную компоненту:


// Добавление тега 1192 в структуру данных чека
СтруктураЧека = Новый Структура;
СтруктураЧека.Вставить("ДанныеЧека", МассивПозиций);
// Добавляем значение для тега 1192
СтруктураЧека.Вставить("ДополнительныйРеквизит", "Основание: Чек №1234");

// В процедуре подготовки XML:
Если ПараметрыЧека.Свойство("ДополнительныйРеквизит") Тогда
    ЗаписьXML.ЗаписатьАтрибут("AdditionalAttribute", ПараметрыЧека.ДополнительныйРеквизит);
КонецЕсли;

Посмотрим на ситуацию с ФФД 1.05. Некоторые программисты сталкиваются с тем, что компонента 1С версии ниже 2.4 игнорирует это поле при передаче драйверу. В этом случае единственным выходом остается прямое обращение к методам драйвера через ОбъектДрайвера.УстановитьПараметр() или использование свойств COM-объекта, как было описано выше.

Подводя итог, можно сказать, что решение проблемы с тегом 1192 на «Штрих-М» требует комплексного подхода: проверки версии драйвера, корректного формирования атрибута AdditionalAttribute в 1С и, при необходимости, настройки таблиц печати самой кассы.

← На главную