При необходимости расширить информативность фискального чека, добавляя в него уникальные реквизиты, зависящие от каждого конкретного документа, стандартных средств «Редактора шаблонов» от производителя ККТ часто оказывается недостаточно. Давайте разберем, как программно вмешаться в процесс подготовки данных, чтобы передать нужную информацию в кассу.
Для того чтобы касса получила данные, 1С должна сформировать пакет информации в формате, который понимает драйвер оборудования. Вместо прямого редактирования XML-строк, которое является крайне ненадежным и трудноподдерживаемым методом, необходимо найти место, где формируется структура параметров фискализации. В 1С:Управление торговлей 11.4 ключевым местом является общий модуль МенеджерОборудованияВызовСервера. Именно здесь сосредоточена логика подготовки данных для передачи в драйвер.
Вам необходимо найти процедуру СформироватьXMLПакетДляФискализацияЧека. Внутри этой процедуры 1С формирует структуру, которая впоследствии преобразуется в XML. Хорошей отправной точкой для поиска станет глобальный поиск строки ЗаписатьНачалоЭлемента("CheckPackage"). Именно здесь начинается формирование пакета, который в конечном итоге будет передан драйверу ККТ для печати.
Никогда не вносите изменения непосредственно в типовой код конфигурации. Это приведет к тому, что при ближайшем обновлении программы ваши наработки будут затерты, а функционал кассы может выйти из строя. Используйте Расширения конфигурации. Это позволит вам «вклиниться» в типовой код, не изменяя его напрямую.
Рассмотрим алгоритм действий по шагам:
МенеджерОборудованияВызовСервера.&After (После) или &Around (Вместо) для процедуры СформироватьXMLПакетДляФискализацияЧека.Для того чтобы информация корректно отобразилась в чеке, важно понимать структуру взаимодействия 1С с оборудованием (БПО — Библиотека подключаемого оборудования). Драйверы ККТ, сертифицированные «1С:Совместимо», ожидают получение данных в виде регламентированных параметров. Не пытайтесь формировать XML-текст вручную. Вместо этого проанализируйте содержимое структуры ПараметрыФискализации.
Рассмотрим примерный подход к заполнению данных:
// Пример логики в расширении
Процедура МойКод_СформироватьXMLПакет(ПараметрыФискализации)
// Доступ к объекту параметров
// Добавление произвольных тегов согласно ФФД
// Например, использование метода добавления дополнительных реквизитов:
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("ИмяРеквизита", "Значение");
ПараметрыФискализации.ДополнительныеРеквизиты.Добавить(СтруктураРеквизитов);
КонецПроцедуры
При передаче нестандартных данных всегда учитывайте версию ФФД (Формата фискальных документов), на которой работает ваша касса. ФФД 1.05 имеет жесткие ограничения, тогда как 1.1 и 1.2 предлагают более широкие возможности для работы с тегами. Если вы передадите данные, которые не соответствуют требованиям протокола, драйвер вернет ошибку, и чек не пробьется.
Чтобы понять, что именно уходит на кассу, обязательно воспользуйтесь логами:
Помните: анализ логов — лучший инструмент разработчика. Видя, как 1С формирует пакет, вы легко найдете нужную точку в коде, где необходимо вставить вызов вашего расширения для обогащения чека дополнительной информацией.