Генерация QR кода для любых конфигураций 1С (обычные и управляемые формы)

11.10.19

Разработка - Универсальные функции

Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет "КомпонентаПечатиQRКода". Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Генерация QR кода для любых конфигураций 1с (управляемые формы):
.epf 424,81Kb ver:1
242 1 850 руб. Купить
Генерация QR кода для любых конфигураций 1с (обычные формы):
.epf 424,84Kb
153 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Создайте внешнюю обработку и из конфирурации УТ 11.4 перетащите в нее общий макет "КомпонентаПечатиQRКода".

В модуле объекта: 

1 Создаем функцию получить генератор QR кода из макета:

функция ПолучитьГенераторQRкода()
лМакетКомпоненты=ПолучитьМакет("КомпонентаПечатиQRКода");
лАдрес=ПоместитьВоВременноеХранилище(лМакетКомпоненты);
ГенераторQRкода=неопределено;
попытка
	Если ПодключитьВнешнююКомпоненту(лАдрес,"QR") тогда
		 ГенераторQRкода=новый("AddIn.QR.QRCodeExtension");
	иначе
		сообщить("Не удалось подключить компоненту генерации QR кода");		
	конецЕсли;
исключение
	сообщить(ОписаниеОшибки());	
КонецПопытки;
возврат ГенераторQRкода;
конецФункции

2 Создаем функцию получить двоичные данные QR-кода:

// Возвращает двоичные данные для формирования QR кода.
//
// Параметры:
//  QRСтрока         - Строка - данные, которые необходимо разместить в QR-коде.
//
//  УровеньКоррекции - Число - уровень погрешности изображения при котором данный QR-код все еще возможно 100%
//                             распознать.
//                     Параметр должен иметь тип целого и принимать одно из 4 допустимых значений:
//                     0(7% погрешности), 1(15% погрешности), 2(25% погрешности), 3(35% погрешности).
//
//  Размер           - Число - определяет длину стороны выходного изображения в пикселях.
//                     Если минимально возможный размер изображения больше этого параметра - код сформирован не будет.
//
// Возвращаемое значение:
//  ДвоичныеДанные  - буфер, содержащий байты PNG-изображения QR-кода.
// 
// Пример:
//  
//  // Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС.
//
//  QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
//  ТекстОшибки = "";
//  ДанныеQRКода = получитьQRкод(QRСтрока, 0, 190);
//  Если ДанныеQRКода=неопределено тогда
//  возврат;
//  КонецЕсли;
//
//  КартинкаQRКода = Новый Картинка(ДанныеQRКода);
//  ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;
//
Функция получитьQRкод(QRСтрока, УровеньКоррекции, Размер) экспорт
	УстановитьОтключениеБезопасногоРежима(Истина);
	ГенераторQRКода = ПолучитьГенераторQRкода();
	Если ГенераторQRКода = Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Попытка
		ДвоичныеДанныеКартинки = ГенераторQRКода.GenerateQRCode(QRСтрока, УровеньКоррекции, Размер);
	Исключение
		сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	Возврат ДвоичныеДанныеКартинки;
	
КонецФункции

В модуле формы:

&НаСервере
Процедура получитьQRкодНаСервере()
QRкод="";
об=РеквизитФормыВЗначение("Объект");
если СтрДлина(сокрлп(объект.Текст))=0 тогда сообщить("Нет данных для генерации QR-кода"); возврат; конецЕсли;
ДанныеQRКода = об.получитьQRкод(Объект.Текст, 0, 190);
QRкод =ПоместитьВоВременноеХранилище(Новый Картинка(ДанныеQRКода));

КонецПроцедуры

&НаКлиенте
Процедура получитьQRкод(Команда)
    получитьQRкодНаСервере();
КонецПроцедуры

Тестировалось на платформе 1С:Предприятие 8.3 (8.3.14.1565), конфигурации: БП (3.0.70.25), БП(2.0.66.77), УНФ (1.6.13.58), УТ(11.4.6.200), УТ (10.3.38.1).

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

QR код генерация кода

См. также

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

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

14.05.2025    5445    DeerCven    15    

57

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

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    46443    dimanich70    83    

164

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6864    6    John_d    13    

59

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57525    atdonya    31    

68

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

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8634    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22823    YA_418728146    8    

174