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

22.07.24

Разработка - БСП (Библиотека стандартных подсистем)

Описание возможности печати произвольного QR-кода в текстовом (не фискальном) документе ККМ с помощью типовых функций БПО.

Библиотека стандартных подсистем версии 3.1.9.302
Библиотека подключаемого оборудования версии 3.2.2.32

Конфигурация Розница, редакция 3.0 (3.0.7.122)

 

Возникла необходимость печати произвольного QR-кода в текстовом документа ККМ. На форуме удалось найти следующее решение, но можно добиться необходимого результат другим путем.

В текстовую строку для печати необходимо добавить строчку:

"|ШтрихКод|QR|" + данные, которые необходимо закодировать в QR

и, подготовив данные, вызвать типовую процедуру ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьПечатьТекста.

Пример использования:
 

&НаКлиенте
Процедура Печать(Команда)
		
	ОповещениеПриЗавершении = Новый ОписаниеОповещения("ЗавершитьПечатьКопииЧека", ЭтотОбъект);
	
	Если ЗначениеЗаполнено(ФискальныйРегистратор) Тогда 
		
		ПодключенноеУстройство	= МенеджерОборудованияКлиент.ПолучитьПодключенноеУстройство(ФискальныйРегистратор);
		ПараметрыПодключения	= МенеджерОборудованияКлиентСервер.ПараметрыПодключения(ПодключенноеУстройство); 
		
		ШиринаСтроки = ?(ПараметрыПодключения.Свойство("ШиринаСтроки") И ПараметрыПодключения.ШиринаСтроки > 0, ПараметрыПодключения.ШиринаСтроки, 32); 
		
		ПараметрыОперации = ПодготовитьДанные();
		
		ТекстЧека = ПодготовитьТекстЧека(ШиринаСтроки, ПараметрыОперации);
	
		ПараметрыОперации = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПечатиТекста(ТекстЧека);
		
		ТекстЧека = ТекстЧека + Символы.ПС + "|ШтрихКод|QR|" + "Сюда мы поместим 
		|нужную информацию для чека ООО Рога и Копыта" + Символы.ПС;
		
		ПараметрыОперацииТекст = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПечатиТекста(ТекстЧека);
		
		ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьПечатьТекста(ОповещениеПриЗавершении,
			ЭтаФорма, ФискальныйРегистратор, ПараметрыОперацииТекст);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПодготовитьДанные()
	
	ОбщиеПараметры = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека();
	
	ОбщиеПараметры.ТорговыйОбъект		= "ООО Рога и Копыт"; 	
	ОбщиеПараметры.Организация 		= "ООО Рога и Копыт";
	ОбщиеПараметры.ОрганизацияНазвание 	= "ООО Рога и Копыт";
	ОбщиеПараметры.ОрганизацияИНН 		= "3556662747";
	ОбщиеПараметры.ОрганизацияКПП 		= "11111111";
	ОбщиеПараметры.НомерКассы     		= "00001";
	ОбщиеПараметры.НомерСмены     		= "1";
	
	ТекстСтрокиПозицииЧека	= СтрШаблон(НСтр("ru = '%1%2%3%4 x %5 = %6'"), "Мотор", Символы.ПС, Символы.ПС, 2, 3, 6);	
	СтрокаПозицииЧека	= ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыТекстовойСтрокиЧека(ТекстСтрокиПозицииЧека);	
	
	ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаПозицииЧека); 
	
	Возврат ОбщиеПараметры;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПодготовитьТекстЧека(ШиринаСтроки, ПараметрыОперации);
	
	Шаблон		= ШаблоныФискальныхДокументов.ШаблонКассовыйЧек(ШиринаСтроки, ПараметрыОперации);
	ТекстЧека	= ШаблоныФискальныхДокументов.ВывестиКакТекст(Шаблон);
	
	Возврат ТекстЧека;
	
КонецФункции

&НаКлиенте
Процедура ЗавершитьПечатьКопииЧека(РезультатВыполнения, ПараметрДействия) Экспорт
	
	Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(РезультатВыполнения, "Результат") И НЕ РезультатВыполнения.Результат Тогда
		
		ТекстСообщения = СтрШаблон(НСтр("ru = 'Произошла ошибка при попытке повторной печати фискального чека.
			|Причина: %1'"), РезультатВыполнения.ОписаниеОшибки);
		ПоказатьПредупреждение(, ТекстСообщения);
		
	КонецЕсли;
	
КонецПроцедуры

Обновление: Спасибо пользователю за замечание. Дополнил пример для большего понимания решаемой задачи.

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

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

25000 руб.

06.03.2026    1627    4    0    

3

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    13838    49    26    

56

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Все мы когда-то писали свои функции для получения реквизита через точку или парсинга строк. В этой статье собрана выжимка самых полезных и ежедневно необходимых процедур и функций БСП. Никакой сухой документации ИТС — только жизненные кейсы, чистый код и разбор ситуаций, когда стандартные подсистемы делают работу за нас.

1 стартмани

30.07.2026    4889    Elya_Elya    14    

17

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».

04.06.2026    10731    Kaliostr0    21    

36

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

06.02.2026    17832    manul1c    7    

26

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Использование Библиотеки стандартных подсистем позволяет разработчикам 1С значительно ускорить процесс создания решений за счет готового универсального кода, поддерживаемого и обновляемого официальным вендором. В статье рассказывается про роль и применение «Библиотеки стандартных подсистем» (БСП), примеры интеграции и подключения подсистем.

23.09.2025    16450    AlexeyPROSTO_1C    1    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Torin 981 22.07.24 10:14 Сейчас в теме
(0) "типовых функций БСП" - или БПО ?
KirillZ44; RocKeR_13; +2 Ответить
2. KirillZ44 12 22.07.24 10:36 Сейчас в теме
(1) Вы правы. Считал, что все это часть БСП. Спасибо за ликбез и прошу прощения за неточность, сейчас поправлю.
3. RocKeR_13 1483 22.07.24 13:42 Сейчас в теме
(2) Там же есть процедура непосредственно для печати QR-кодов:

	
	ОписаниеОповещениеПриЗавершении  = Новый ОписаниеОповещения("ПечатьКода_Завершение", ЭтотОбъект); // обработка результата печати
	
	ПараметрыОперации = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПечатиQRКодаНаФискальномУстройстве();
		
	ПараметрыОперации.QRКод.ЗначениеКода  = "Эта строка будет зашифрована в QR-коде"; // текстовое значение QR-кода
	ПараметрыОперации.QRКод.ТекстПользователя = НСтр("ru='Отксканируйте QR-код и будет вам счастье!'");

	ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьПечатьQRКодаНаФискальномУстройстве(
		ОписаниеОповещениеПриЗавершении,
		Новый УникальныйИдентификатор, // или идентификатор формы, откуда печатаете
		ККТ, // СправочникСсылка.ПодключаемоеОборудование
		ПараметрыОперации);
Показать
KirillZ44; +1 Ответить
4. KirillZ44 12 22.07.24 13:54 Сейчас в теме
(3) Спасибо

Данный функционал видел, но тогда сделал вывод, что мне он не подходит. Требовалось напечатать текстовый документ по аналогии с фискальным и в нижней его части разместить QR с определенной информацией.

Возможно, если переопределить значение свойства QRКод.ТекстПользователя, то это тоже сработает.
5. RocKeR_13 1483 22.07.24 13:57 Сейчас в теме
(4) Конкретно для вашего примера как раз подойдет: в ТекстПользователя пишите "Отсканируйте QR-код" и будет в точности как у вас на картинке)
KirillZ44; +1 Ответить
6. KirillZ44 12 22.07.24 14:05 Сейчас в теме
(5) Для примера из статьи да, подходит. Но изначально решаемая задача была другой. Проблема в оформлении мною статьи. Возьму на заметку и в будущем буду оформлять лучше, а так же постараюсь исправить на более наглядный пример.
RocKeR_13; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация