Как нам изменить или дополнить печатную форму чека ККМ в 1С:Розница?

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

Нам часто требуется внести изменения в стандартную форму чека контрольно-кассовой машины (ККМ) в конфигурации 1С:Розница. Это может быть добавление рекламной информации, вывод специфических данных о скидках, бонусах или просто произвольного текста. Давайте вместе разберем, как мы можем решить эту задачу, используя различные подходы, от стандартных настроек до программных модификаций.

1. Использование стандартных шаблонов чеков ККМ в 1С:Розница

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

  1. Перейдите в раздел "Администрирование".
  2. Выберите пункт "Печатные формы, отчеты и обработки".
  3. Найдите и откройте "Шаблоны этикеток, ценников и чеков ККМ".

Здесь мы можем создать новый шаблон или отредактировать существующий. Рассмотрим основные возможности:

Создание и редактирование шаблона:

  1. При создании нового шаблона укажите "Объект" (например, "Чек ККМ") и присвойте шаблону понятное "Наименование".
  2. Макет шаблона обычно состоит из трех основных частей:
    • Шапка: Верхняя часть чека.
    • Табличная часть: Основной состав чека, где перечисляются товары.
    • Подвал (итоги): Нижняя часть чека, где выводятся общие суммы, скидки и другая итоговая информация.
  3. Мы должны понимать, что обязательные для передачи в ОФД поля, такие как наименование товара, количество, цена, сумма, НДС, в фискальном разделе состава чека не подлежат редактированию через этот механизм. Это сделано для соответствия законодательству.
  4. Однако в остальные поля состава чека, а также в нефискальные документы, которые печатаются после основного чека, мы можем добавлять:
    • Текстовые строки: Произвольный текст.
    • Составные строки: Строки, включающие как текст, так и значения полей.
    • Таблицы: Для вывода структурированной информации.
  5. Для добавления полей используйте список "Доступные поля". Мы можем просто перетаскивать нужные поля в соответствующие разделы макета.
  6. Если нам нужно добавить несколько дополнительных нефискальных документов, например, для вывода рекламных акций или информации о бонусах, мы можем воспользоваться кнопкой "Добавить нефискальный документ".
  7. Мы также можем указать общие параметры печати, например, "Ширину чековой ленты".
  8. В режиме редактирования макета доступен "Просмотр результата", который позволяет нам увидеть, как будет выглядеть распечатанный чек до его сохранения. Это очень удобно для быстрой проверки изменений.

Отображение "Суммы без скидки":

Если наша задача — вывести "Сумму без скидки" или детализацию скидок, мы можем настроить это в общих параметрах системы.

  1. Перейдите в "НСИ и администрирование" -> "Настройка НСИ и разделов" -> "Продажи" -> "Печать документов". Здесь мы можем найти опции, отвечающие за вывод информации о скидках в печатных формах.
  2. В некоторых версиях 1С:Розница (например, 3.0), мы можем найти более тонкие настройки представления скидки: "Настройка" -> "Еще больше возможностей" -> "Общее" -> "Печать" -> "Представление скидки". Здесь мы можем выбрать, что именно будет отображаться – "Сумма" или "Процент скидки".

Важные моменты при работе с шаблонами:

2. Программное изменение XML-пакета для фискализации

Если нам требуются более сложные или динамические изменения, которые невозможно реализовать через стандартные шаблоны, мы можем прибегнуть к программному вмешательству. 1С генерирует специальный XML-пакет, который затем передается в драйвер ККМ для фискализации. Мы можем перехватить или модифицировать этот пакет.

Выясняем причину:

1С формирует XML-структуру, которая описывает содержимое чека. Если нам нужно добавить произвольный текст или данные, которые не предусмотрены стандартными полями шаблонов, мы можем воздействовать на эту XML-структуру.

Разберем по шагам, где искать и что изменять:

  1. Поиск формирования XML-пакета: Мы знаем, что 1С генерирует XML. Нам нужно найти место в коде конфигурации, где происходит формирование этого пакета. Часто это функция ПолучитьXMLПакетДляФискализацияЧека. Мы можем найти эту функцию, используя поиск по конфигурации.
  2. Параметры функции ПолучитьXMLПакетДляФискализацияЧека: Рассмотрим подробнее параметры, которые передаются в эту функцию. Нам сообщают, что одним из полезных параметров является ТекстоваяСтрока, которая находится в структуре ФискальнаяСтрока. Это именно то, что нам нужно для вставки произвольного текста.

    Пример концептуального использования (это упрощенный пример, реальная реализация может быть сложнее и требовать расширения конфигурации):

    
    // Предположим, мы находимся в модуле, где формируется пакет для фискализации
    // и у нас есть объект "ПакетДанных"
            
    // Добавим произвольную текстовую строку в фискальный документ
    Если ПакетДанных.Свойство("ФискальнаяСтрока") Тогда
        ПакетДанных.ФискальнаяСтрока.Вставить("ТекстоваяСтрока", "Спасибо за покупку! Приходите еще!");
    Иначе
        // Если ФискальнаяСтрока отсутствует, возможно, нужно создать ее или использовать другой механизм
        // Например, добавить в нефискальный документ
    КонецЕсли;
    
    // Или, если мы хотим добавить строку в табличную часть Positions (список позиций чека)
    // Это может быть сложнее, так как Positions - это список элементов
    // Пример добавления в конец списка позиций (как нефискальная строка):
    Если ПакетДанных.Свойство("Positions") Тогда
        НоваяПозиция = ПакетДанных.Positions.Добавить();
        НоваяПозиция.Text = "Дополнительная информация о скидке: -100 руб.";
        // Убедитесь, что это не будет интерпретировано как фискальная позиция
        // или используйте механизм для нефискальных строк
    КонецЕсли;
    
  3. Работа с Positions и documentpackage: В XML-структуре чека Positions представляет собой табличную часть с элементами чека. Мы можем программно добавить в нее свой текст, например, в последнюю строку, если нам нужно вывести что-то между позициями и итогами. Для вывода нефискальных данных в конце чека, как отдельного документа, мы можем использовать структуру documentpackage.

    Структура documentpackage может содержать элемент TextString, который позволяет нам вывести произвольный текст. Примерно так:

    
    // Пример добавления нефискального документа с текстом в конец чека
    // Предположим, у нас уже есть сформированный XML-пакет
            
    // Создаем новый элемент нефискального документа
    НефискальныйДокумент = Новый Структура();
    НефискальныйДокумент.Вставить("ТипДокумента", "Нефискальный");
    НефискальныйДокумент.Вставить("Текст", "Наш сайт: www.primer.ru");
    
    // Добавляем его в список документов пакета
    ПакетXML.Документы.Добавить(НефискальныйДокумент);
    
  4. Функция СформироватьТекстНефискальногоЧека: Эта функция, как следует из названия, предназначена для формирования текста нефискального чека. Если наша задача сводится к печати дополнительной нефискальной информации отдельно от основного фискального чека, мы можем использовать эту функцию для генерации нужного нам содержимого.
  5. Модуль объекта "ЧекККМ": Для более глубокого понимания процесса и возможности внесения изменений, мы можем проанализировать функцию ПодготовитьДанныеДляФискализацииЧека в модуле объекта ЧекККМ. Именно здесь часто происходит сборка всех данных перед их отправкой в ККТ.

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

3. Использование редактора шаблонов ККТ АТОЛ

Если мы используем ККТ производства АТОЛ, существует еще один способ модификации чека, который дополняет возможности 1С.

Когда это применимо:

Этот метод актуален, если наши ККТ работают на драйверах АТОЛ, и нам нужно добавить статичный текст или изменить определенные части чека, которые могут быть специфичны для драйвера или прошивки ККТ.

Как это работает:

  1. Утилита от АТОЛ: АТОЛ предоставляет специальную утилиту (редактор шаблонов), которая позволяет напрямую настраивать шаблоны чеков, хранящиеся в самой ККТ.
  2. Подключение ККТ: Для работы с этой утилитой нам потребуется подключить кассу к компьютеру и запустить соответствующее программное обеспечение.
  3. Возможности редактирования: Через редактор АТОЛ мы можем добавлять неизменяющийся текст перед чеком или в его "подвал". Это может быть полезно для размещения постоянной рекламной информации, контактов или других статических данных.

Ограничения:

Этот метод обычно менее гибок, чем шаблоны 1С или программные модификации, так как он ориентирован на статичное содержимое и не позволяет динамически выводить данные из 1С. Мы рассмотрели несколько подходов к изменению и дополнению печатной формы чека ККМ в 1С:Розница. Выбор конкретного метода зависит от сложности требуемых изменений, нашей квалификации и специфики используемого оборудования. Начните с наиболее простого способа (шаблоны 1С), и если он не покрывает всех потребностей, переходите к более сложным программным модификациям. ← К списку