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

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

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

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


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

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

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

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

Народ, помогите разобраться плиз)
3 Kigo_Kigo
 
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Кода;

Попробуй так сделать, возможно ошибка в формировании самого кода.
5 1Садовник
 
06.03.20
15:59
При запуске ругается на данную строку:
    ОбластьКартинка.Рисунки.%ИМЯКАРТИНКИ%.Картинка = КартинкаQRКода;
6 Сергиус
 
06.03.20
16:01
(0)Смотреть в отладчике, что в ОбластьКартинка.Рисунки. Часто бывает не совпадают имена
7 Panda_oOo
 
09.03.20
16:27
(5) Простите, а .%ИМЯКАРТИНКИ%. - это где указывается это имя?
Я в основном работал как пользователь, и в разработке опыта немного, в частности с макетами вообще не было
8 ДенисЧ
 
09.03.20
16:29
(7) В отладчике встань на эту строку и посмотри коллекцию ОбластьКартинка.Рисунки
9 Panda_oOo
 
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!).
10 Panda_oOo
 
10.03.20
06:45
И ещё вопрос, только что вспомнил. Непонятно про "Текст ошибки".
Если пытаюсь добавить в эту строку "ДанныеQRКода = УправлениеПечатью.ДанныеQRКода(QRСтрока,0,119);" 4-ым параметром "Текст ошибки", то выходит ошибка, что много параметров.
И выходит, что данная проверка в коде лишняя? Или я делаю что-то не так (как обычно)
11 Kigo_Kigo
 
10.03.20
08:22
(10) Так залезь в общиемодули- управление печатью  - ДанныеQRКода и посмотри есть там у тебя 4-й параметр - как код ошибки, если нет, то и передавать его туда не надо
12 Panda_oOo
 
10.03.20
08:44
(11) Глянул, только 3 параметра (QRСтрока, УровеньКоррекции, Размер).
А по поводу языка не можете подсказать, почему только на латинице работает нормально?
13 Kigo_Kigo
 
10.03.20
09:02
(12) пробуйте Кодировки ансии или Юникод(утф-8)
14 Сияющий в темноте
 
10.03.20
09:12
скорей всего,потеря знаков идет при чтении,попробуйте почитать телефоном и посмотреть.
ну и у кода тоже есть кодировка,если что.
15 Panda_oOo
 
10.03.20
10:00
(14) Ну вот с  телефона прочитываю как раз, и идёт потеря символов.
16 Panda_oOo
 
10.03.20
10:00
(13) А не подскажете, как именно? это надо в строке сразу кодировку прописывать? или при выводе в QR код?
17 Kigo_Kigo
 
10.03.20
10:42
(16) Посммотри как идет формирование кода, потому как в ответ из УправлениеПечатью.ДанныеQRКода прилетает уже готовая картинка, ее перекодировать никак уже не получится, значит надо игратся с "QRСтрока" а вот в какой момент ее перекодировать - надо посмотреть
18 Panda_oOo
 
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Кода) уже заходит Картинка.
Соответственно, в ДокументРезультат.Вывести(ОбластьКартинка) - Текстовый документ.

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