Качаем утилиту https://github.com/downloads/zint/zint/Setup_Zint_2.4.2.0.exe, а также мануал к ней по желанию https://github.com/downloads/zint/zint/zint_manual_242.pdf.
Допустим по умолчанию утилита установилась по адресу «C:Program Files (x86)int».
Для получения картинки QR кода используем функцию ПолучитьКартинкуQRКода, где параметры:
КодируемыйОбъект имеет тип «Строка» (кодируемая фраза), КаталогГенератораШК = «C:Program Files (x86)int» (место установки утилиты). Функция возвращает объект Картинка или тип Неопределено. Далее для печати в табличном документе картинки, можно использовать функцию ВывестиQRКодВОбластьМакета, где параметры ОбластьМакета — область макета табличного документа, КартинкаQRКода это картинка возвращенная функцией ПолучитьКартинкуQRКода.
Функция ПолучитьКартинкуQRКода(КодируемыйОбъект,КаталогГенератораШК) Экспорт
Перем КартинкаQRКод;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«png»);
Попытка
КомандаСистемы(«zint -b 58 -o » + ИмяВременногоФайла + » -d ‘» + КодируемыйОбъект + «‘»,КаталогГенератораШК);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Попытка
КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат Неопределено;
КонецПопытки;
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат КартинкаQRКод;
КонецФункции
Функция ВывестиQRКодВОбластьМакета(ОбластьМакета,КартинкаQRКода) Экспорт
Для каждого Рисунок Из ОбластьМакета.Рисунки Цикл
Если Рисунок.Имя = «ШтрихКод» Тогда
Если ЗначениеЗаполнено(КартинкаQRКода) Тогда
Рисунок.Картинка = КартинкаQRКода;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецФункции
Если нужно закодировать не QR кодом, а каким нибудь другим эта утилита умеет кодировать 142 типа кода. Подробности в мануале https://github.com/downloads/zint/zint/zint_manual_242.pdf. Функция по получению штрих кода любого типа ниже.
Параметр ТипШтрихКода может имеет либо Строковой тип либо числовой. Главное чтобы этот параметр был от 1 до 142.
Функция ПолучитьКартинкуШККода(КодируемыйОбъект,КаталогГенератораШК,ТипШтрихКода) Экспорт
Перем КартинкаQRКод;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«png»);
Попытка
КомандаСистемы(«zint -b » + ТипШтрихКода +» -o » + ИмяВременногоФайла + » -d ‘» + КодируемыйОбъект + «‘»,КаталогГенератораШК);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Попытка
КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат Неопределено;
КонецПопытки;
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат КартинкаQRКод;
КонецФункции
Благодарю за ссылку на чудо утилиту //infostart.ru/profile/15144/
Спасибо!
Кириллицу понимает?
(2) Erne100, QR не понимает, другие не проверял
А разве стандартная компонента от 1С не умеет формировать QR? (прощу прошения заранее,если не врубился)
(4) Пуд, не умеет
(5) понятно, зарапортовался.
Спасибо! Думаю, пригодится!
(3) очень жаль. Однако всё равно плюс.
Что-то не в мануале, не у тебя в примере не нашел как указать нужный параметр коррекции ошибок для qrcode.
Вот здесь:
http://ocvita.ru/content/view/89
тот же самый zint, только в виде ActiveX
+ некоторые исправления по части совместимости с 1С (работает с кирилицей, ЕАН можно давать как 13 знаков и пр)
То есть как обычная 1Совская компонента печати штрихкода, просто вставляем в макет или на форму и все.
(9) zeek,
Это option_1, там 4 варианта. (это если работать через API / ActiveX). Как через командную строку, не знаю.
(9) zeek, в командной строке набири C:папка до зинтzint -help.
вывалится список команд, так вот команда —secure=параметр коррекции ошибок
Здравствуйте!
Попробовал получить штрих-код с помощью приведённого здесь кода и получил ошибку:
«Обработка.AAA.Форма.Форма(459)}: Ошибка при вызове конструктора (Картинка): Файл не обнаружен ‘C:Documents and SettingsEZ1Local SettingsTempv8_6D_24.png’
»
Подскажите пожалуйста, в чём может быть причина.
Спасибо!
(14) evg61, Утилиту установили? КаталогГенератораШК указали, где утилита установлена? попробуйте еще заменить в коде публикации на эту строку КомандаСистемы(«zint -b 58 -o » + «»»» + ИмяВременногоФайла + «»»» + » -d » + КодируемыйОбъект,КаталогГенератораШК);
Powervalid, спасибо за подсказку!
Естественно, утилита установлена. Путь к папке установленной утилиты корректно перенесён в текст кода.
Строку изменил, результат тот же…
У тебя ошибка скорее всего из-за того, что картинка утилитой не формируется. В командной строке проверял, как отрабатывает утилита? Если нет, проверь, вызываешь командную строку пуск->выполнить cmd. Там пишешь путь до утилиты к примеру C:Program Files (x86)zint -b 58 -o c: est.png -d test, выполняешь смотришь сформировалась ли картинка c: est.png
Powervalid, спасибо!
Проверил.
Из командной строки запускается, приходится только использовать Progra~1 вместо Program Files а далее открывается окно утилиты, но данные, то есть что кодировать в штрихкод и куда потом сохранить картинку, утилиту не передаются…
Устанавливал из этого файла: Setup_Zint_2.4.3.0
Судя по командной строке окно утилиты открываться не должно, так думаю…
(18) evg61, окно утилиты не должно открываться, я ошибся должно быть вот так:C:Program Files (x86)zintzint -b 58 -o c: est.png -d test (здесь кодируется слово «test», картинка помещается в c: est.png)
Powervalid, спасибо! Это я понял и написал строку как надо, у меня, кстати, исполняемый модуль не zint, а qtzint. Так установился, почему и спросил про версию инсталляционного модуля. Опять же, я пробовал под ХР, а предлагаемый пример, как понимаю, под семёркой делался. Соответственно, ещё одна коррекция строки. И ещё я заметил, что в документации, то что кодируется — заключается в одиночные кавычки. Всё вышесказанное я учёл, но что то не так… Странно, вообще то… Никто не жаловался, значит пример пошёл с первого предъявления у всех… Буду думать, ещё раз спасибо!
Спасибо автору, думаю пригодится!
Powervalid, спасибо! Всё работает!
Просто переустановил zint.
Бывает же…
Автору спасибо!
(22) evg61, действительно нежданчик
(10) nafa,
Почему-то не желает региться под вынь 7 — 64
При формировании картинок выскакивают эти чёрные окошки.. 🙁 Очень не нравится… может кто-нибудь знает спобоб как их убрать?
Заюзал hidcon.exe скачать можно отсюда —http://hostex.org/dl/5b016588c6
В модуле изменил только
Попытка
ЗапуститьПриложение(«c:Program Filesinthidcon.exe zint.exe -b 58 -o » + ИмяВременногоФайла + » —scale=3 -d ‘» + ТекстШК + «‘»,»c:program fileszint», Истина);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Работать конечно начинает быстрее.. если к примеру печатаешь 10ток доков с ШК, то заметно..
Но всё равно очень долго 🙁
(25)
Вот тут прорегистрацию ActiveX под Win 7
Кириллицу не поддерживает (( Запускаю с 1С 7.7
Никто Ocvita не прикручивал к 7ке? Был бы благодарен!
(14) evg61,
у меня без параметра «каталогГенератораШК», а после него параметр «ДождатьсяЗавершения«=истина!
это происходит из-за того что пока картинка формируется в секольких долях секунды а функция/процедура уже выполняет другую операцию, картинки как бы еще нет ! параметр «ДождатьсяЗавершения»=истина ждет завершения и после этого выполняется следующая операция
П.С. конечно 141(142) громко сказано, там нумерация не подряд, так что количество не так уж большое
Подскажите , на УФ работает данная обработка или нет?
(32) на УФ есть встроенная в 1С ОбщийМакет.КомпонентаПечатиQRКода (есть как БП2, так и в БП3, в остальных не смотрел)