Top.Mail.Ru
Заказать консультацию
специалиста 1С
Отправить заявку

ИнфоСофт использует файлы «cookie» с целью персонализации сервисов и повышения удобства пользования веб-сайтом. Вы можете запретить обработку сookies в настройках браузера. Пожалуйста, ознакомьтесь с политикой использования cookies.
Оставаясь на сайте, вы соглашаетесь с политикой использования cookies.

Зачем вообще лезть в XML чека?

19.12.2025
10
Время прочтения - 7 мин.
Заказать консультацию

Фискальный чек в 1С – это не только набор обязательных тегов для ФНС, но и удобный транспорт для собственных данных: внутренних идентификаторов, ссылок, маркетинга, сервисной информации.​​
Если понимать структуру XML‑пакета, можно безопасно добавлять туда свои текстовые блоки и QR‑коды, не ломая формат ФФД и работу ККТ.​​

Ниже разберем, из чего состоит XML‑чек, где в нем живут товары, оплаты и реквизиты, и покажем, в какие точки логично “вкручивать” свою информацию. ​​

Общая структура XML‑чека 1С

Ниже – обобщённый вид XML‑пакета, который формируется процедурой фискализации.

<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
    <Parameters
        CashierName="..."
        CashierINN="..."
        OperationType="..."
        TaxationSystem="..."
        SenderEmail="..."
        SaleAddress="..."
        SaleLocation="..."
        CustomerEmail="..."
        CustomerPhone="..."
        AgentType="..."
        AdditionalAttribute="..."
        ...>
        <!-- Вложенные реквизиты: коррекция, агент, поставщик, покупатель, отраслевые данные -->
        <!-- Например:
             <CustomerInfo ... />
             <AgentData ... />
             <IndustryRequisite ... /> -->
    </Parameters>
      <Positions>
        <!-- Товарные строки -->
        <FiscalString
            Name="..."
            Quantity="..."
            PriceWithDiscount="..."
            AmountWithDiscount="..."
            DiscountAmount="..."
            Department="..."
            VATRate="..."
            VATAmount="..."
            PaymentMethod="..."
            CalculationSubject="..."
            CalculationAgent="..."
            CountryOfOrigin="..."
            CustomsDeclaration="..."
            ExciseAmount="..."
            AdditionalAttribute="..."
            MarkingCode="..."
            MeasureOfQuantity="..." >
            <!-- Вложенные отраслевые реквизиты, данные маркировки -->
        </FiscalString>
          <!-- Текстовые строки -->
        <TextString
            Text="..."/>
          <!-- Штрихкоды и QR-коды -->
        <Barcode
            Type="QR"
            ValueBase64="..."/>
    </Positions>
      <Payments
        Cash="..."
        ElectronicPayment="..."
        PrePayment="..."
        PostPayment="..."
        Barter="..."/>
      <ElectronicPaymentInfo>
        <ElectronicPayment
            Amount="..."
            PaymentMethod="..."
            Identifiers="..."
            AdditionalInformation="..."/>
    </ElectronicPaymentInfo>
</CheckPackage>
 

Какие блоки можно редактировать?

У нас есть блоки Parameters, Positions, Payments и ElectronicPaymentInfo. Вносить корректировки в структуре рекомендуется в блоке Positions. В нем имеются элементы:

  • FiscalString - это основа чека: наименование товара, количество, цена, сумма, скидки, НДС, признак способа расчета и предмета расчета, признаки агента по позиции, страна, ГТД, акциз, маркировка, единица измерения, отраслевые реквизиты.

  • TextString – произвольный текст: заголовки, подзаголовки, disclaimers, рекламные сообщения, купоны, условия акций. Текст может переноситься и выравниваться по левому краю, центру или правому.

  • Barcode – штрихкод или QR.

Мы будем использовать элементы TextString и Barcode. Чтобы вывести свой произвольный текст, либо же штрих/QR код.

Где можно внести доработки при формировании XML?

Есть два способа

Способ 1

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

Соответственно мы вносим доработки непосредственно в процедуру СформироватьXMLПакетДляФискализацияЧека.

Например, сделаем вывод в Чек QR кода при сканировании которого открывается нужный документ ЧекККМ.

Для этого мы обрабатываем УИД документа ЧекККМ – убираем лишние символы и конвертируем hex-строку в число и далее конвертируем его в Base64.

image1.png

Далее полученные данные мы добавляем в XML, делать это необходимо в блоке Positions.

image2.png

В конце добавим элемент Barcode и поместим туда полученную Base64 строку.

image3.png

Пробьем чек с данными доработками и перейдем в регистр «Фискальные операции» чтобы посмотреть структуру XML пробитого чека.

Видим, что элемент добавился корректно

image4.png

Во вкладке «Представление» мы можем просмотреть чек.

  image5.png

При сканировании данного QR кода открывается документ ЧекККМ, по которому был пробит этот чек.

Способ 2

В процедуре СформироватьXMLПакетДляФискализацияЧека уже написан алгоритм, который заполняет блок Positions. Заполнение зависит от переданных параметров в данную процедуру. Соответственно мы можем найти место, где происходит заполнение параметров фискализации при пробитии чека и внести правки там.

Приведу пример. (УТ 11.5.22.103). Заполнение параметров фискализации чека при пробитии происходит в модуле формы документа ЧекККМ в функции ПараметрыОперацииФискализацииЧекаНаСервереЛокализация. Если же у вас отличается конфигурация, то можно легко найти обратным поиском с места где происходит вызов процедуры НачатьФискализациюЧекаНаФискальномУстройстве, в которую передается параметр ПараметрыОперации, это и есть нужная нам структура.

image6.png

ПараметрыОперацииФискализацииЧекаНаСервереЛокализация возвращает структуру ПараметрыОперацииФискализацииЧека, соответственно здесь нам необходимо перед возвратом заполнить свои параметры.

image7.png

Приведу пример с добавлением произвольного текста в чек

image8.png

ПозицииЧека это массив, который изначально содержит строки с товарами из документа ЧекККМ. Мы в него добавляем 3 строки, две из них пустые (отступы), а другая которая содержит надпись, выравненную по центру «Тестовый текст». В примере вставка происходит в начало массива, чтобы строки находились в самом верху блока Positions.

Пробьем чек с данными доработками и перейдем в регистр «Фискальные операции» чтобы посмотреть структуру XML пробитого чека.

Видим, что строки добавились корректно.

image9.png

Во вкладке «Представление» мы можем просмотреть чек. 

image10.png

Выравнивание текста в представлении отрабатывает некорректно, фактически на чеке который напечатала касса текст располагается по центру, как мы и указали при заполнении.

Вывод

Разобравшись со структурой XML‑чека 1С и точками входа в алгоритм формирования CheckPackage, становится понятно, что чек — это не “черный ящик” драйвера, а управляемый канал передачи данных между вашей конфигурацией, ККТ и внешними системами. Используя элементы TextString и Barcode в блоке Positions можно аккуратно встроить в чек служебные идентификаторы, ссылки, QR‑коды на документы и маркетинговые сообщения, не вмешиваясь в фискальную часть и не нарушая требования ФФД.


Заказать консультацию специалиста 1С
Оставьте заявку и наши эксперты проконсультируют вас по данной статье.
Рассказать друзьям
Для разработчиков 1С
Вам может быть интересно: