Генератор 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С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    21037    dimanich70    81    

145

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

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

1 стартмани

18.03.2024    4154    3    John_d    11    

57

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

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

12.02.2024    19324    atdonya    24    

58

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

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

30.11.2023    5599    ke.92@mail.ru    16    

65

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

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

28.08.2023    15088    YA_418728146    7    

169

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

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

2 стартмани

22.08.2023    3668    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 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    18616    172    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. orfos 218 17.12.20 12:03 Сейчас в теме
классная идея!
shell_maxim; kaliuzhnyi; +2 Ответить
2. SerVer1C 816 17.12.20 12:21 Сейчас в теме
тут надо уточнить, что генератор не в 1с, а на внешнем сервисе
aibasoft; Ali_q; smit1c; DrAku1a; cleaner_it; kaliuzhnyi; Yimaida; +7 Ответить
3. shell_maxim 44 17.12.20 12:30 Сейчас в теме
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 44 17.12.20 17:50 Сейчас в теме
(4) По поводу доступности сервисов согласен и написал что можно и локально развернуть за 5 минут. Это просто еще один из способов.
Кстати, находил статью где описывались методы генерации кода средствами 1с, прям на форме тысячи строк кода и не одного комментария...
У меня как-то не очень с внешними компонентами.
6. tka4enk0 146 18.12.20 08:04 Сейчас в теме
хм. в 2010 году работал в больнице. Так 10 лет назад у них был рентген аппарат с программным обеспечением который и снимки хранил, и описания делал
(5)
не одного комментари

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

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


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

Как вариант
25. malikov_pro 1325 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, здравствуйте, возможно с вами связаться не через данный сайт нужна помощь в данной обработке?
30. пользователь 01.07.24 09:59
Сообщение было скрыто модератором.
...
29. Azamwox 01.07.24 07:38 Сейчас в теме
shell_maxim, здравствуйте, возможно с вами связаться нужна помощь в данной обработке?
31. пользователь 01.07.24 09:59
Сообщение было скрыто модератором.
...
Оставьте свое сообщение