При доработке старых конфигураций, таких как Управление торговлей 10.3, часто возникает необходимость соответствовать актуальным требованиям законодательства, в частности — передавать реквизиты покупателя в фискальный чек. Рассмотрим, как подойти к решению этой задачи, если вы работаете с оборудованием Штрих-М и используете устаревшие механизмы обработки обслуживания.
Основная сложность заключается в том, что печать реквизитов покупателя — это не просто вывод текста на ленту, а передача структурированных данных в фискальный накопитель. Согласно формату фискальных документов (ФФД), данные о покупателе должны быть переданы в строго определенных тегах:
1227 — «Покупатель» (наименование).1228 — «ИНН покупателя».Если вы пытаетесь просто дописать строки в область печати, касса их проигнорирует или выдаст ошибку. Нам необходимо передать эти данные на этапе формирования пакета для фискализации.
В типовых решениях (даже устаревших) за формирование данных отвечает модуль МенеджерОборудованияВызовСервера или аналогичные функции в обработках обслуживания. Ключевой точкой входа является функция ПолучитьXMLПакетДляФискализацияЧека_ТО. Давайте проанализируем, как можно расширить этот процесс.
Согласно документации ИТС, для того чтобы реквизиты попали в фискальный документ, в XML-структуру пакета необходимо внедрить узел CustomerDetail. Разберем структуру этого узла:
// Примерная структура XML для передачи контрагента
<CustomerDetail>
<Name>ООО Ромашка</Name>
<INN>7700000000</INN>
</CustomerDetail>
Штрих-М поддерживает работу с ФФД 1.05 или 1.2. Если установлена очень старая версия библиотеки (DLL), она просто не «поймет» теги 1227 и 1228. Обновите драйверы до актуальных версий, предоставляемых производителем.СформироватьТаблицуПараметровДляОперацииФН, сосредоточьтесь на функции формирования XML. Вам необходимо найти место, где формируется тело чека, и добавить туда заполнение объекта CustomerDetail.БПО (Библиотеки подключаемого оборудования) вызывает конфликты или не позволяет передать нужные теги из-за устаревшей обработки, рассмотрите возможность прямого обращения к объекту драйвера Штрих-М.Если штатные функции 1С не поддерживают передачу нужных параметров, мы можем воспользоваться методом прямого обращения к COM-объекту драйвера. В этом случае алгоритм действий будет следующим:
Рассмотрим использование метода SetParam перед вызовом команды PrintCheck. При таком подходе мы минуем абстракции 1С и общаемся с кассой напрямую:
// Пример логики прямого вызова (псевдокод)
ОбъектДрайвера.SetParam(1227, "Наименование покупателя");
ОбъектДрайвера.SetParam(1228, "ИНН покупателя");
ОбъектДрайвера.PrintCheck();
Важное предостережение: Перед началом работ обязательно сделайте резервную копию базы данных и проверьте поведение на тестовой кассе. Работа с фискальным регистратором требует точности, так как ошибки в передаваемых параметрах могут привести к тому, что чек будет напечатан без обязательных реквизитов, что является нарушением правил использования ККТ.
Частая проблема — данные «теряются» на пути от 1С до кассы. Чтобы выяснить причину, обязательно активируйте логирование в драйвере Штрих-М. Проанализируйте полученный файл лога после попытки печати чека с контрагентом. Если в файле лога вы видите переданные теги 1227 и 1228, значит, проблема в настройках самой кассы или версии прошивки. Если же тегов в логе нет — значит, вы некорректно модифицировали XML-пакет в 1С.
Помните, что для документов типа Приходный кассовый ордер (ПКО) ККТ должна находиться в режиме «Приход». Если оборудование настроено некорректно или находится в режиме эмуляции, параметры покупателя могут отбрасываться системой как избыточные. Работайте последовательно, начиная с проверки версии драйвера и заканчивая анализом XML-пакета.