Генератор QR кодов для 1С без компонент через HTTP API

11.01.21

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

Самый простой, на мой взгляд, способ получить QR код для 1СV8. Без внешних компонент, как говорится, бесплатно, без смс и регистрации))

Всем привет!

Решил добавить в свою конфигурацию  QR коды на макетах печатных форм.

Раньше никогда подобного не делал и начал искать примеры. Как оказалось, примеров много, но все как-то не так. И задумался я об упрощении этого процесса. Т.к. я очень люблю работать с веб ресурсами, а особенно с api, было принято решение поискать сервис для генерации QR кодов да еще и с api. Долго искать не пришлось. Буквально первые несколько результатов запроса выдали нужный сервис. Подобных сервисов немало и выбор мой был ни на чем не основан, он просто был первый. (Ни в коем случае не реклама сервиса). Предложенный мной способ работает с любым сервисом.

В общем суть такова. HTTP запросом получаем двоичные данные картинки которую генерирует веб сервис и вставляем её куда вздумается. Для примера вывожу на форму и в макет печатной формы. Что может быть проще. Для тех кто подумал о том, что сервис может временно не работать или перестать работать совсем, можно добавить несколько сервисов и посылать запросы на них. Ну а для полной автономности можно развернуть свой веб сервер(если его еще нет) буквально за 5 минут и закинуть туда html-ку от Google . Думаю в ближайшее время именно этот способ опробую и поделюсь опытом. 

Код модуля формы:

&НаКлиенте
Процедура Генерировать(Команда)
	
	Строка = Текст;
	Соединение = Новый HTTPСоединение("api.qrserver.com");
	Запрос = Новый HTTPЗапрос("/v1/create-qr-code/?data=" + СтрокуВURL(Строка) + "&size=[" + Размер + "]x[" + Размер + "]");    
	Результат =  Соединение.Получить(Запрос);
	Тело = Результат.ПолучитьТелоКакДвоичныеДанные();

	QRCode = ПоместитьВоВременноеХранилище(Тело,УникальныйИдентификатор);	
	
	
	ОбъектНаСервере(Тело,Текст,Размер).Показать();

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

&НаСервере
Функция ОбъектНаСервере(Тело,Строка,Размер)
	
	ОбработкаОбъект =  РеквизитФормыВЗначение("Объект");
	ТабДок = ОбработкаОбъект.ПечатьНаСервере(Тело,Строка,Размер);
	
	Возврат ТабДок;
КонецФункции


&НаСервере
Функция СтрокуВURL(Строка)
	
	Строка = КодироватьСтроку(Строка,СпособКодированияСтроки.URLВКодировкеURL);
	
	Возврат Строка;
	
КонецФункции

 

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

Функция ПечатьНаСервере(Тело,Текст,Размер) Экспорт 
	ТабДок = Новый ТабличныйДокумент;
	МакетОбработки = ПолучитьМакет("Макет");
	
	ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.Текст = Текст;
	ОбластьШапка.Параметры.Размер = Строка(Размер) + "х" + Строка(Размер);
	ТабДок.Вывести(ОбластьШапка);
	
	
	ОбластьQR = МакетОбработки.ПолучитьОбласть("Код");
	Рис = ОбластьQR.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
	Рис.Лево = 20;
	Рис.Ширина = 35;
	Рис.Высота = 35;
	Рис.ГраницаСверху = Ложь;
	Рис.ГраницаСлева = Ложь;
	Рис.ГраницаСнизу = Ложь;
	Рис.ГраницаСправа = Ложь;
	Рис.РазмерКартинки = РазмерКартинки.Пропорционально;
	Рис.Картинка = Новый  Картинка(Тело);
	ТабДок.Вывести(ОбластьQR);
	
	Возврат ТабДок;
КонецФункции

Тест на 

1С:Предприятие 8.3 (8.3.18.1128)

обработка QR макет картинка API HTTP

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.03.2024    2891    2    John_d    11    

56

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.02.2024    5049    atdonya    22    

51

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    4102    ke.92@mail.ru    16    

62

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    9381    YA_418728146    6    

143

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

2 стартмани

22.08.2023    2233    25    progmaster    8    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16355    142    sapervodichka    112    

130

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7355    quazare    8    

110
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. orfos 215 17.12.20 12:03 Сейчас в теме
классная идея!
shell_maxim; kaliuzhnyi; +2
2. SerVer1C 750 17.12.20 12:21 Сейчас в теме
тут надо уточнить, что генератор не в 1с, а на внешнем сервисе
aibasoft; Ali_q; smit1c; DrAku1a; cleaner_it; kaliuzhnyi; Yimaida; +7
3. shell_maxim 42 17.12.20 12:30 Сейчас в теме
(2) изменил заголовок)
+
16. hollyfood 20.12.20 14:34 Сейчас в теме
(3)Подобных сервисов не мало и выбор мой был ни на чем не основан, он просто был первый. - "немало" - слитно, поправите?
+
4. davdykin 25 17.12.20 13:19 Сейчас в теме
Это конечно сугубо мое мнение, но:
1. Использование интернет сервисов для локальных конфигураций не всегда оправдано, особенно когда это может стать критично, клиенту надо отдать документа, а у нас сервис не отвечает.
2. Мне в этом вопросе гораздо больше понравилась компонента от 1С, которая возвращает qr код в виде картинки, что очень удобно, т.к. без лишних заморочек позволяет вставлять в различные места (например у меня работает в шаблоне word договора).
kvika; bmugem; Bassgood; German; AnryMc; Drivingblind; zqzq; Lapitskiy; cleaner_it; Dream_kz; Robbi; tka4enk0; Yimaida; +13
5. shell_maxim 42 17.12.20 17:50 Сейчас в теме
(4) По поводу доступности сервисов согласен и написал что можно и локально развернуть за 5 минут. Это просто еще один из способов.
Кстати, находил статью где описывались методы генерации кода средствами 1с, прям на форме тысячи строк кода и не одного комментария...
У меня как-то не очень с внешними компонентами.
+
6. tka4enk0 144 18.12.20 08:04 Сейчас в теме
хм. в 2010 году работал в больнице. Так 10 лет назад у них был рентген аппарат с программным обеспечением который и снимки хранил, и описания делал
(5)
не одного комментари

Ну не все там так сложно. из той же УТ функционал можно за полчаса дернуть.
+
9. buganov 200 19.12.20 17:53 Сейчас в теме
(5) В БСП сейчас есть в Управлении печатью типовой механизм. Вызывается одной строчкой
laurely@mail.ru; nekit_rdx; Bassgood; ellavs; cleaner_it; +5
7. zhenyat 6 19.12.20 10:22 Сейчас в теме
Погодите, но БСП же сама умеет в QR????
+
8. shell_maxim 42 19.12.20 10:48 Сейчас в теме
(7) насколько мне известно в последних версиях нет. В любом случае через компоненту
+
11. Labotamy 19.12.20 18:48 Сейчас в теме
(8)между компанентой бсп и внешним сервисом, я выберу бсп
Bassgood; Lapitskiy; zeegin; Brawler; +4
10. Labotamy 19.12.20 18:47 Сейчас в теме
12. zeegin 114 20.12.20 02:50 Сейчас в теме
Поставил минус потому что название не соответствует содержимому.
DrAku1a; +1
13. DrAku1a 1715 20.12.20 04:28 Сейчас в теме
Ожидалось - супер фича по программной генерации QR-кодов в 1С, под катом - тупо запрос с интернет-сервиса...
С тем-же успехом можно использовать qrcoder.ru или какой-нибудь другой онлайн-сервис.
nekit_rdx; smit1c; Drivingblind; drmaxart; kamisov; +5
14. drmaxart 146 20.12.20 12:31 Сейчас в теме
Мы так делали по причине невозможности применения ВК со штрих-кодом, но возникают периодически ошибки, если сервис тот недоступен. Пришлось развернуть локально, но в идеале его бы на 1С написать чистом без всяких внешних источников.
+
15. starik-2005 3036 20.12.20 12:54 Сейчас в теме
(14)
по причине невозможности применения ВК со штрих-кодом
А что за причина?
RocKeR_13; +1
21. sashs1980 85 21.12.20 15:15 Сейчас в теме
(14) Так есть же подобные решения.
+
17. RocKeR_13 1321 20.12.20 23:24 Сейчас в теме
Тьфу ты, подумал будет что-то а-ля программное создание bmp или на худой конец раскрашивание ячеек табличного документа)))
+
18. user1503726 21.12.20 04:05 Сейчас в теме
Можно еще текст с символами 0А, 0В или какие там подходят для единичной матрицы... и драйвер шрифта, который преобразует их в qr код.
+
19. victuan 4236 21.12.20 04:42 Сейчас в теме
(2) Надо еще уточнить, что это генератор для 1С8, а не для 1С, т.к. в частности не работает в 1С 7.7.
+
20. ellavs 1027 21.12.20 09:43 Сейчас в теме
Если как альтернатива БСП, то почему бы и нет :)
В БСП же всё делается одной строкой (при чем даже не в самой свежей версии).
Вот тут приводила пример, как часть примера при формировании макета
Цитирую:
// Получаем данные для QR-кода
QRCode = Новый Картинка(УправлениеПечатью.ДанныеQRКода("Строка для кодирования в QR", 0, 100));
// Добавление картинки кода в макет
ОбластьНижнегоКолонтитула.Параметры.QRCode = QRCode;
idiked; timka05; Dach; AndreevYA; vaakulin; AnryMc; shell_maxim; +7
22. kolya_tlt 86 22.12.20 14:46 Сейчас в теме
меня иногда ругают за излишний код ревью, но две строки

Результат =  Соединение.Получить(Запрос);
Тело = Результат.ПолучитьТелоКакДвоичныеДанные();


должны быть в попытке
за интеграцию спасибо, будем иметь в виду где компоненты может и не быть
+
26. Cyberhawk 135 08.01.21 17:12 Сейчас в теме
(22) Вторую-то зачем в попытке?
+
23. malikov_pro 1293 22.12.20 19:28 Сейчас в теме
(5) В статье не увидел описания локальной инсталяции, подобную задачу решал через node.js, для нее нужно сервис на win зарегистрировать.
+
24. shell_maxim 42 22.12.20 20:41 Сейчас в теме
(23)
Ну а для полной автономности можно развернуть свой веб сервер(если его еще нет) буквально за 5 минут и закинуть туда html-ку от Google .

Как вариант
+
25. malikov_pro 1293 22.12.20 23:40 Сейчас в теме
(24) Пример только для QR
const QRCode = require('qrcode')
const { PassThrough } = require('stream')

const express = require('express')
const app = express();

app.get('/qr/:content', async (req, res) => {
	
	try {
		const content = req.params.content;
		const qrStream = new PassThrough();
		const result = await QRCode.toFileStream(qrStream, content,
			{
				type: 'png',
				width: 200,
				errorCorrectionLevel: 'H'
			}
		);

		qrStream.pipe(res);

	} catch (err) {
		console.error('Failed to return content', err);
	}
});

app.listen(3000, () => console.log('Server ready'));
Показать


Для DataMatrix и остального вариант использовать
https://github.com/metafloor/bwip-js
shell_maxim; +1
27. roman199 11.06.21 19:02 Сейчас в теме
shell_maxim, здравствуйте, возможно с вами связаться не через данный сайт нужна помощь в данной обработке?
+
Оставьте свое сообщение