Как добавить произвольные данные в онлайн-чек ККТ Атол в 1С:Управление торговлей 11.4?

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

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

Поиск точки входа в программном коде 1С

Для того чтобы касса получила данные, 1С должна сформировать пакет информации в формате, который понимает драйвер оборудования. Вместо прямого редактирования XML-строк, которое является крайне ненадежным и трудноподдерживаемым методом, необходимо найти место, где формируется структура параметров фискализации. В 1С:Управление торговлей 11.4 ключевым местом является общий модуль МенеджерОборудованияВызовСервера. Именно здесь сосредоточена логика подготовки данных для передачи в драйвер.

Вам необходимо найти процедуру СформироватьXMLПакетДляФискализацияЧека. Внутри этой процедуры 1С формирует структуру, которая впоследствии преобразуется в XML. Хорошей отправной точкой для поиска станет глобальный поиск строки ЗаписатьНачалоЭлемента("CheckPackage"). Именно здесь начинается формирование пакета, который в конечном итоге будет передан драйверу ККТ для печати.

Реализация через расширения конфигурации

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

Рассмотрим алгоритм действий по шагам:

  1. Создайте расширение конфигурации и добавьте в него модуль МенеджерОборудованияВызовСервера.
  2. Используйте аннотацию &After (После) или &Around (Вместо) для процедуры СформироватьXMLПакетДляФискализацияЧека.
  3. Внутри переопределенного метода вы сможете манипулировать структурой параметров до момента ее финальной сериализации в XML.

Использование механизма параметров фискализации

Для того чтобы информация корректно отобразилась в чеке, важно понимать структуру взаимодействия 1С с оборудованием (БПО — Библиотека подключаемого оборудования). Драйверы ККТ, сертифицированные «1С:Совместимо», ожидают получение данных в виде регламентированных параметров. Не пытайтесь формировать XML-текст вручную. Вместо этого проанализируйте содержимое структуры ПараметрыФискализации.

Рассмотрим примерный подход к заполнению данных:


// Пример логики в расширении
Процедура МойКод_СформироватьXMLПакет(ПараметрыФискализации)
    // Доступ к объекту параметров
    // Добавление произвольных тегов согласно ФФД
    // Например, использование метода добавления дополнительных реквизитов:
    СтруктураРеквизитов = Новый Структура;
    СтруктураРеквизитов.Вставить("ИмяРеквизита", "Значение");
    ПараметрыФискализации.ДополнительныеРеквизиты.Добавить(СтруктураРеквизитов);
КонецПроцедуры

Важные аспекты ФФД и логирование

При передаче нестандартных данных всегда учитывайте версию ФФД (Формата фискальных документов), на которой работает ваша касса. ФФД 1.05 имеет жесткие ограничения, тогда как 1.1 и 1.2 предлагают более широкие возможности для работы с тегами. Если вы передадите данные, которые не соответствуют требованиям протокола, драйвер вернет ошибку, и чек не пробьется.

Чтобы понять, что именно уходит на кассу, обязательно воспользуйтесь логами:

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

← На главную