Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Добавление QR кода в макет

Добавление QR кода в макет
Я
   Panda_oOo
 
06.03.20 - 13:44
Добрый день
Часто ищу на данном форуме полезную информацию, и вот пришло время и мне попросить помощи.

Поставлена задача - добавить QRкод в печатную форму, чтобы при формировании документа генерировался на основе текста + текущей даты.
Нашёл в интернете информацию, но (позор мне) не могу собрать это дело воедино.

Код выглядит примерно так:

ОбластьКартинка = Макет.ПолучитьОбласть("Картинка");
QRСтрока = ("дловрпдлыврпдоыврпдлор");
ТекстОшибки ="";
ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока,0,119);
Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
    ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
КонецЕсли;
КартинкаQRКода = Новый Картинка(ДанныеQRКода);
ОбластьКартинка.Рисунки.Картинка = КартинкаQRКода;
ДокументРезультат.Вывести(ОбластьКартинка);


При запуске ругается на данную строку:
    ОбластьКартинка.Рисунки.Картинка = КартинкаQRКода;

На макете создаю область "Картинка", там добавляю картинку.
С макетами не работал до этого почти.
Важное замечание! В режиме предприятия используют не стандартный макет, а измененный. а в конфигураторе отображается только стандартный макет. И если переключить на стандартный макет, то добавляемая картинка (не QR код, а просто картинка) показывается, а в пользовательском макете - нет.

Может есть где информация по работе 1. с макетами, 2. с QR кодами.

Мог что-то упустить, с радостью отвечу на дополнительные вопросы.
 
 
   Panda_oOo
 
1 - 06.03.20 - 13:50
К слову, работа происходит в конфе ЗУП 3.1
   Panda_oOo
 
2 - 06.03.20 - 14:06
up

Народ, помогите разобраться плиз)
   Kigo_Kigo
 
3 - 06.03.20 - 14:35
(2) в отладчике КартинкаQRКода  тип - картинка?
   Сергиус
 
4 - 06.03.20 - 15:55
(0) Пример:
  
  // Выводим на печать QR-код, содержащий в себе информацию зашифрованную по УФЭБС.


  QRСтрока = УправлениеПечатью.ФорматнаяСтрокаУФЭБС(РеквизитыПлатежа);
  ТекстОшибки = "";
  ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока, 0, 190, ТекстОшибки);
  Если Не ПустаяСтрока(ТекстОшибки)
      ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
  КонецЕсли;

  КартинкаQRКода = Новый Картинка(ДанныеQRКода);
  ОбластьМакета.Рисунки.QRКод.Картинка = КартинкаQRКода;

Попробуй так сделать, возможно ошибка в формировании самого кода.
   1Садовник
 
5 - 06.03.20 - 15:59
При запуске ругается на данную строку:
    ОбластьКартинка.Рисунки.%ИМЯКАРТИНКИ%.Картинка = КартинкаQRКода;
   Сергиус
 
6 - 06.03.20 - 16:01
(0)Смотреть в отладчике, что в ОбластьКартинка.Рисунки. Часто бывает не совпадают имена
   Panda_oOo
 
7 - 09.03.20 - 16:27
(5) Простите, а .%ИМЯКАРТИНКИ%. - это где указывается это имя?
Я в основном работал как пользователь, и в разработке опыта немного, в частности с макетами вообще не было
   ДенисЧ
 
8 - 09.03.20 - 16:29
(7) В отладчике встань на эту строку и посмотри коллекцию ОбластьКартинка.Рисунки
   Panda_oOo
 
9 - 10.03.20 - 06:42
Спасибо, кто помогал.
Разобрался. Оказывается, в этой строчке ОбластьКартинка.Рисунки.%ИМЯКАРТИНКИ%.Картинка = КартинкаQRКода; Слово РИСУНКИ нельзя менять Оо кто бы знал.
Сделал строку ОбластьКартинка.Рисунки.Картинка1.Картинка = КартинкаQRКода; где ОбластьКартинка - это область макета, Рисунки - я так понимаю, это название коллекции, к чему обращаюсь (поправьте, если не прав), Картинка1 - собственно имя элемента Картинка, расположенного на форме, а Картинка - ну я не знаю даже)

В общем, код:

ОбластьКартинка = Макет.ПолучитьОбласть("Картинка2");
                    
            
            QRСтрока = ("Hello, World!");
            ТекстОшибки ="";
            ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока,0,119);
            Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
                ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
            КонецЕсли;
            КартинкаQRКода = Новый Картинка(ДанныеQRКода);
            ОбластьКартинка.Рисунки.Картинка1.Картинка = КартинкаQRКода;
            ДокументРезультат.Вывести(ОбластьКартинка);


Всё работает, на документе выводится QRКод, считывается любым устройством.
Единственный вопрос, который возник в процессе: почему, если текст написан кириллицей, то на выходе получаем знаки вопроса (?????????????????????), а если латиницей - то нормальный текст (Hello, World!).
   Panda_oOo
 
10 - 10.03.20 - 06:45
И ещё вопрос, только что вспомнил. Непонятно про "Текст ошибки".
Если пытаюсь добавить в эту строку "ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока,0,119);" 4-ым параметром "Текст ошибки", то выходит ошибка, что много параметров.
И выходит, что данная проверка в коде лишняя? Или я делаю что-то не так (как обычно)
   Kigo_Kigo
 
11 - 10.03.20 - 08:22
(10) Так залезь в общиемодули- управление печатью  - ДанныеQRКода и посмотри есть там у тебя 4-й параметр - как код ошибки, если нет, то и передавать его туда не надо
   Panda_oOo
 
12 - 10.03.20 - 08:44
(11) Глянул, только 3 параметра (QRСтрока, УровеньКоррекции, Размер).
А по поводу языка не можете подсказать, почему только на латинице работает нормально?
   Kigo_Kigo
 
13 - 10.03.20 - 09:02
(12) пробуйте Кодировки ансии или Юникод(утф-8)
   Сияющий в темноте
 
14 - 10.03.20 - 09:12
скорей всего,потеря знаков идет при чтении,попробуйте почитать телефоном и посмотреть.
ну и у кода тоже есть кодировка,если что.
   Panda_oOo
 
15 - 10.03.20 - 10:00
(14) Ну вот с  телефона прочитываю как раз, и идёт потеря символов.
   Panda_oOo
 
16 - 10.03.20 - 10:00
(13) А не подскажете, как именно? это надо в строке сразу кодировку прописывать? или при выводе в QR код?
   Kigo_Kigo
 
17 - 10.03.20 - 10:42
(16) Посммотри как идет формирование кода, потому как в ответ из УправлениеПечатью.ДанныеQRКода прилетает уже готовая картинка, ее перекодировать никак уже не получится, значит надо игратся с "QRСтрока" а вот в какой момент ее перекодировать - надо посмотреть
   Panda_oOo
 
18 - 10.03.20 - 11:28
(17) в ответ из "УправлениеПечатью.ДанныеQRКода" прилетает ещё "89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00...." Вот такое.

А в КартинкаQRКода = Новый Картинка(ДанныеQRКода) уже заходит Картинка.
Соответственно, в ДокументРезультат.Вывести(ОбластьКартинка) - Текстовый документ.

Буду пробовать к строке дописывать кодировку...
   Kigo_Kigo
 
19 - 10.03.20 - 12:04
(18) Это код картинке в Хеш(в двоичных символах)
   Panda_oOo
 
20 - 10.03.20 - 12:10
(19) Да,я понял ,спасибо. Сейчас ищу, как строку в utf-8 закодировать
   Panda_oOo
 
21 - 19.03.20 - 08:16
Ребят, подскажите, почему у меня русские буквы в знаки вопроса превращаются при считывании? Не могу разобраться. Может, кто сталкивался, или ссылка есть на тему, буду весьма признателен


Список тем форума
Рекламное место пустует  Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.