Библиотека стандартных подсистем версии 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'"), РезультатВыполнения.ОписаниеОшибки);
ПоказатьПредупреждение(, ТекстСообщения);
КонецЕсли;
КонецПроцедуры
Обновление: Спасибо пользователю за замечание. Дополнил пример для большего понимания решаемой задачи.