Платформа 1с Предприятие 7.7 отправлена фирмой 1С на свалку истории и больше никак не развивается и не поддерживается, от этого страдает ее функционал и способность выполнять задачи которые диктует время, но с этим фактом смирились и согласны не все. Благодаря классным ребятам энтузиастам-разработчикам внешних библиотек (за что спасибо им огромное) есть возможность использовать «динозавра» в современных реалиях как в нашем случае для вывода на форму qr кодов, datamatrix кодов для маркировки и т.д.)).
Для того чтобы легко и просто работать с двумерными кодами на платформе 1с Предприятие 7.7, требуется библиотека FormEx.dll автора Алексея Фёдорова aka АЛьФ , скачать которую можно по адресу formex.dorex.pro.
Как же печатать двумерные коды в 1с 7.7 (QR/DATAMATRIX)?
1. Для начала скачиваем и регистрируем внешнюю библиотеку formex.dll в системе.
2. На форме которой хотим рисовать штрихкод, добавляем элемент диалога «Картинка».
3. Пример кода для отрисовки qr кода в элементе картинка:
Процедура Сформировать() //пытаемся загрузить компоненту в формате штатной ВК Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 0 Тогда Предупреждение("Неудачная попытка загрузить FormEx.dll"); СтатусВозврата(0); Возврат; КонецЕсли; Сервис = СоздатьОбъект("Сервис"); Сервис.НарисоватьШтрихкод(Картинка,ТипШтрихКода, ДанныеДляПреобразования, 0); КонецПроцедуры
Количество возможных типов штрихкодов в библиотеке formex просто огромно. Ниже приведен список типов штрихкодов которые можно вывести, а так же внизу статьи приложен файл с обработкой для примера который вы можете скачать и поэкспериментировать.
Возможные типы штрихкодов который формирует библиотека…
CODE11
C25MATRIX
C25INTER
C25IATA
C25LOGIC
C25IND
CODE39
EXCODE39
EANX
EANX_CHK
EAN128
CODABAR
CODE128
DPLEIT
DPIDENT
CODE16K
CODE49
CODE93
FLAT
RSS14
RSS_LTD
RSS_EXP
TELEPEN
UPCA
UPCA_CHK
UPCE
UPCE_CHK
POSTNET
MSI_PLESSEY
FIM
LOGMARS
PHARMA
PZN
PHARMA_TWO
PDF417
PDF417TRUNC
MAXICODE
QRCODE
CODE128B
AUSPOST
AUSREPLY
AUSROUTE
AUSREDIRECT
ISBNX
RM4SCC
DATAMATRIX
EAN14
CODABLOCKF
NVE18
JAPANPOST
KOREAPOST
RSS14STACK
RSS14STACK_OMNI
RSS_EXPSTACK
PLANET
MICROPDF417
ONECODE
PLESSEY
TELEPEN_NUM
ITF14
KIX
AZTEC
DAFT
MICROQR
HIBC_128
HIBC_39
HIBC_DM
HIBC_QR
HIBC_PDF
HIBC_MICPDF
HIBC_BLOCKF
HIBC_AZTEC
DOTCODE
HANXIN
AZRUNE
CODE32
EANX_CC
EAN128_CC
RSS14_CC
RSS_LTD_CC
RSS_EXP_CC
UPCA_CC
UPCE_CC
RSS14STACK_CC
RSS14_OMNI_CC
RSS_EXPSTACK_CC
CHANNEL
CODEONE
GRIDMATRIX
Как на форме рисовать — все ясно. А вот столкнулся с необходимостью печати ценников с QR кодом. На печатную форму не соображу, как выводить динамические картинки.
Все, разобрался. В макете размещаем любую картинку. в поле текст вписываем функцию такого вида: ВыводQRкода(Таб.ТекущийОбъект) , а в модуле пишем так: //*******************************************
Функция ВыводQRкода(Объект,Текст=»https://apm.by/»)
//функция, прописанная в поле «Текст» объекта «Картинка» на макете печати
//пример: ВыводQRкода(Таб.ТекущийОбъект)
глСервис.НарисоватьШтрихкод(Объект, 58, Текст);
КонецФункции // ВыводQRкода
//*******************************************
Процедура Сформировать()
Таб = СоздатьОбъект(«Таблица»);
Таб.ИсходнаяТаблица(«Таблица»);
Картинка = СоздатьОбъект(«Картинка»);
Таб.ВывестиСекцию(«Секция_1»);
Таб.Показать();
КонецПроцедуры
Молодец
Вот только добавил статью
https://skill-blog.ru/no-rubrick/vyvod-qr-datamatrix-koda-v-pechatnoj-forme-1s-7-7/
Можно вопрос? нарисовал таким способом текст «УТ00012345», но андроид приложение читает четко qr код, а сканер шк к компу подкл ситает только цифры, отбрасывает первые две буквы. Как заставить сканер прочитать весь текст?
Какая модель сканера?
В тесте драйвера сканера шк есть либо поиск либо возможность проверки работы сканера — запусти тест и считай qr, если при считывании так же нет
букв только цифры, нужно разбираться с настройками сканера шк. В документации есть сервисные коды, либо программа от производителя для настройки сканера, вот там нужно поковыряться.
Для начала попробуй сбросить настройки, найдя и считав сервисный код (или так же через приложение от производителя).
СПАСИБИЩЕ кстати за статейку.
Не хочет регистрироваться в системе (win10)
Попробуй не использовать regsvr32, а через ЗагрузитьВнешнююКомпоненту(Путь+ИмяВК);
Получилось!!! Спасибочки!
Большое спасибо!!!
а подскажите как использовать существующий в макете объект рисунка для вывода QR ?
на макете есть объект рисунка «D1».
делаю так:
…
Картинка = Макет.Область(«D1»);
Сервис = СоздатьОбъект(«Сервис»);
Сервис.НарисоватьШтрихкод(Картинка,58, «123», 0);
….
макет при выводе показывает пустой «белый квадрат» рисунка.
Вам не нужно получать картинку из макета в коде.
Строка — Картинка = Макет.Область(«D1»); не нужна.
Посмотрите тут…
https://skill-blog.ru/1s/vyvod-qr-datamatrix-koda-v-pechatnoj-forme-1s-7-7/
Вам нужно в свойствах самой картинки, в поле ввода на закладке текст, написать имя экспортной процедуры которая есть в модуле.
Например там в свойствах картинки написать
ВыводШтрихкодаВТаблицу(ИсхТабл.ТекущийОбъект, 58, ,, ,)
А в модуле у вас будет эта процедура первым параметром которой будет сам объект картинки, с ним далее и нужно работать.