Как добавить ИНН и наименование контрагента в чек ККТ при печати из ПКО в 1С:УТ 10.3?

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

При доработке старых конфигураций, таких как Управление торговлей 10.3, часто возникает необходимость соответствовать актуальным требованиям законодательства, в частности — передавать реквизиты покупателя в фискальный чек. Рассмотрим, как подойти к решению этой задачи, если вы работаете с оборудованием Штрих-М и используете устаревшие механизмы обработки обслуживания.

Понимание структуры фискального документа

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

Если вы пытаетесь просто дописать строки в область печати, касса их проигнорирует или выдаст ошибку. Нам необходимо передать эти данные на этапе формирования пакета для фискализации.

Анализ механизма формирования XML-пакета

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

Согласно документации ИТС, для того чтобы реквизиты попали в фискальный документ, в XML-структуру пакета необходимо внедрить узел CustomerDetail. Разберем структуру этого узла:


// Примерная структура XML для передачи контрагента
<CustomerDetail>
    <Name>ООО Ромашка</Name>
    <INN>7700000000</INN>
</CustomerDetail>

Пошаговый план внедрения изменений

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

Использование прямого вызова методов драйвера

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

Рассмотрим использование метода SetParam перед вызовом команды PrintCheck. При таком подходе мы минуем абстракции 1С и общаемся с кассой напрямую:


// Пример логики прямого вызова (псевдокод)
ОбъектДрайвера.SetParam(1227, "Наименование покупателя");
ОбъектДрайвера.SetParam(1228, "ИНН покупателя");
ОбъектДрайвера.PrintCheck();

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

Анализ логов — лучший способ диагностики

Частая проблема — данные «теряются» на пути от 1С до кассы. Чтобы выяснить причину, обязательно активируйте логирование в драйвере Штрих-М. Проанализируйте полученный файл лога после попытки печати чека с контрагентом. Если в файле лога вы видите переданные теги 1227 и 1228, значит, проблема в настройках самой кассы или версии прошивки. Если же тегов в логе нет — значит, вы некорректно модифицировали XML-пакет в 1С.

Помните, что для документов типа Приходный кассовый ордер (ПКО) ККТ должна находиться в режиме «Приход». Если оборудование настроено некорректно или находится в режиме эмуляции, параметры покупателя могут отбрасываться системой как избыточные. Работайте последовательно, начиная с проверки версии драйвера и заканчивая анализом XML-пакета.

← На главную