Где в 1С:Управление торговлей 11.5 найти код формирования XML-пакета для чека ККМ?

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

В современных релизах конфигурации 1С:Управление торговлей (начиная с 11.5.12 и выше), использующих библиотеку подключаемого оборудования (БПО) версии 3.1, процесс формирования фискального чека стал многослойным. Если раньше код был сосредоточен в одном модуле, то теперь данные проходят через цепочку преобразований. Разберем подробно, где именно искать алгоритмы формирования XML-пакета, который отправляется на драйвер кассового аппарата.

Основная точка входа: поиск функции формирования XML

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

Рассмотрим функцию, название которой было определено опытным путем в ходе обсуждения:


Функция СформироватьXMLПакетДляФискализацииЧека(ПараметрыФискализации, ОбщиеПараметры) Экспорт
    // Здесь происходит вызов нижележащих уровней БПО
КонецФункции

Однако важно понимать, что эта функция сама по себе часто является «оберткой». Чтобы найти место, где заполняются конкретные теги (наименование товара, ставка НДС, признаки способа расчета), нам нужно спуститься глубже по стеку вызовов.

Анализ общих модулей и иерархия вызовов

Выясним причину, по которой код распределен по разным модулям. Это связано с универсализацией драйверов. Рассмотрим основные модули, участвующие в процессе:

  1. ОборудованиеЧекопечатающиеУстройстваВызовСервера: В этом модуле подготавливаются первичные данные из документа (например, из документа «Чек ККМ» или «Реализация товаров и услуг»). Здесь формируются таблицы товаров и оплат.
  2. МенеджерОборудованияВызовСервера: Выполняет роль диспетчера, передавая подготовленные таблицы в подсистему БПО.
  3. ПодключаемоеОборудованиеУниверсальныйДрайвер: В этом модуле (или аналогичных модулях с префиксом ПодключаемоеОборудование) происходит финальная сборка текстовой строки XML с использованием объекта ЗаписьXML.

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

Структура XML-пакета и заполнение тегов

Разберем по шагам, как выглядит структура пакета, которую формирует система. Это поможет вам сориентироваться при отладке в конфигураторе. Пакет представляет собой XML-документ с корневым узлом CheckPackage.

Внутри него обычно присутствуют следующие блоки:

Пример формирования одной позиции в коде 1С может выглядеть примерно так (упрощенно):


ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
ЗаписьXML.ЗаписатьАтрибут("Name", СтрокаТовара.Наименование);
ЗаписьXML.ЗаписатьАтрибут("Quantity", СтрокаТовара.Количество);
ЗаписьXML.ЗаписатьАтрибут("PriceWithDiscount", СтрокаТовара.Цена);
ЗаписьXML.ЗаписатьАтрибут("Amount", СтрокаТовара.Сумма);
ЗаписьXML.ЗаписатьАтрибут("VATRate", СтрокаТовара.СтавкаНДС);
ЗаписьXML.ЗаписатьКонецЭлемента();

Как эффективно использовать отладку

Посмотрим на практический совет по поиску нужного места. Если поиск по названию функции не дает быстрого результата из-за сложности конфигурации, применим метод «точки останова».

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

  1. Откройте модуль МенеджерОборудованияКлиент.
  2. Найдите процедуру ВыполнитьКоманду.
  3. Поставьте точку останова на вызове метода драйвера. Обычно это место, где в переменную ВходныеПараметры или ОбъектДрайвера передается сформированная XML-строка.
  4. Запустите пробитие чека и посмотрите стек вызовов (Ctrl+Alt+C). Он покажет вам всю цепочку модулей от нажатия кнопки на форме до формирования XML.

Особенности ФФД 1.2 и маркировки в УТ 11.5

В релизе 11.5.15.79 особое внимание уделяется формату фискальных данных 1.2. Если вы работаете с маркируемыми товарами, формирование XML усложняется добавлением узла GoodCodeData. Проанализируем, где формируется этот узел.

Логика обработки кодов маркировки (DataMatrix) вынесена в специализированные функции БПО. Система берет код маркировки из документа и преобразует его в формат, требуемый ФН (тег 1163). Если вам нужно вмешаться в этот процесс, ищите вызовы функций в общем модуле ИнтеграцияИСМП или процедурах преобразования кодов в модулях БПО. Важно помнить, что некорректное изменение XML-пакета в части маркировки может привести к ошибке «Некорректное состояние ФН» или отказу драйвера принимать пакет.

Заключение

Мы выяснили, что для внесения изменений в логику формирования чека в 1С:УТ 11.5 необходимо работать в связке нескольких модулей. Основная логика подготовки данных находится в ПробитиеЧековПоКассе, а финальная сборка строки XML происходит в недрах модулей ПодключаемоеОборудование через функцию СформироватьXMLПакетДляФискализацииЧека. Использование глобального поиска по конфигурации и грамотная настройка точек останова в момент передачи данных драйверу позволят вам быстро локализовать нужный участок кода.

← На главную