Имя: Пароль:
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
Ребят, подскажите, почему у меня русские буквы в знаки вопроса превращаются при считывании? Не могу разобраться. Может, кто сталкивался, или ссылка есть на тему, буду весьма признателен
AdBlock убивает бесплатный контент. 1Сергей