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