Каталог решений - QR-коды в 1С 8.3 (Linux) без COM-Объектов (Формирование через интернет)

QR-коды в 1С 8.3 (Linux) без COM-Объектов (Формирование через интернет)

QR-коды в 1С 8.3 (Linux) без COM-Объектов (Формирование через интернет)

В наличии

Код для генерации QR без использования COM-Объектов.

Категория:

Описание

Задача: Получать QR-Код на платформе 1С:Предприятие 8.3

Стенд: Kubuntu 12.04 amd64, 1С:Предприятие 8.3

Решение: Здесь на инфостарте опубликована статья для генерации QR кода, но ознакомительная платформа 8.3 на Linux не поддерживает COM-Объекты. При просмотре кода понятно что необходимый функционал можно реализовать средствами платформы.

1. 1С умеет устанавливать HTTP — Соединение еще со времен 8.0;

2. Полученный файл можно поместить во временное хранилище и воспользоваться полученным адресом для вывода.

Часть кода из выше указанной публикации пользователя DanilaDru:

&НаСервере
Функция СохранитьДвоичныйБуферВФайл(Буфер, ИмяФайла) Экспорт
    Поток = Новый COMОбъект(«ADODB.Stream»);
    Поток.Type = 1; //Бинарный
    Поток.Mode = 3;
    Поток.Open();
    Поток.Write(Буфер);
    Поток.SaveToFile(ИмяФайла);
    Поток.Close();
КонецФункции
 
&НаСервере
Функция НапечататьКодСервер(ЗаказСсылка)
    ТабДок = Новый ТабличныйДокумент;
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«png»);
    АдресНачало = «http://chart.apis.google.com/chart?cht=qr&chs=230×230&chl=»;
    АдресКонец = ЗаказСсылка.Номер + Символы.ПС + Заказссылка.Контрагент.Наименование;
    АдресКонец = СтрЗаменить(АдресКонец, » «, «+»);
    АдресКонец = EncodeURL(АдресКонец);
    
    Соединение = ПолучитьCOMОбъект(«»,«Microsoft.XMLHTTP»);
    Соединение.open(«GET», АдресНачало + АдресКонец,0,,);
    Соединение.send(null);
    СохранитьДвоичныйБуферВФайл(Соединение.responseBody, ИмяВременногоФайла);
    
    //Печать
    Макет = Документы.ЗаказПокупателя.ПолучитьМакет(«МакетПечатиКода»);
    Область = Макет.ПолучитьОбласть(«Код»);
    Область.Рисунки.КодРисунок.Картинка = Новый Картинка(ИмяВременногоФайла);
    ТабДок.Вывести(Область);
    Возврат ТабДок;
КонецФункции


После реализации средствами платформы:

&НаСервере
Функция НапечататьКодСервер(ЗаказСсылка) Экспорт
    
    АдресНачало   = «chart.apis.google.com/chart?cht=qr&chs=230×230&chl=»;
    АдресКонец    = ЗаказСсылка.Номер + Символы.ПС + Заказссылка.Контрагент.Наименование;
    АдресКонец    = СтрЗаменить(АдресКонец, » «, «+»);
    АдресКонец    = EncodeURL(АдресКонец);
    
    Соединение = Новый HTTPСоединение(АдресНачало + АдресКонец,,,,,);
    АдресвременногоХранилища = ПолучитьИмяВременногоФайла();
    Соединение.Получить(Адрес, АдресвременногоХранилища);   
    
    АдресвременногоХранилища = ПоместитьВоВременноеХранилище(Новый Картинка(АдресвременногоХранилища), УникальныйИдентификатор);
    
    Возврат АдресвременногоХранилища;
    
КонецФункции

И уже теперь мы можем передать АдресвременногоХранилища в качестве пути к данным поля картинки.

P.S. Обратите внимание на адрес, при установке HTTPСоединения необходимо использовать адрес без «http://«, иначе получите сообщение что сервер не доступен.

 

has been added to your cart:
Оформление заказа