Данная статья является продолжением статьи QR код на форме в 1с 7.7 и использует всю туже внешнюю библиотеку FormEx.dll.
Процесс инициализации данной библиотеки так же описан в предыдущей статье.
Для вывода штрихкода в печатной форме нужно создать объект картинка.
На закладке «Текст» в текстовом поле прописываем функцию которая располагается в модуле формы. В примере :ВыводШтрихкодаВТаблицу(ИсхТабл.ТекущийОбъект, 58,,,,)
В которую первым параметром передаем нашу картинку — ИсхТабл.ТекущийОбъект.
Процедура ВыводШтрихкодаВТаблицу(Картинка,ТипЧислом=58,ТекстШтрихкода,РежимРис=3,Режим, РежимВых=0) Экспорт ТекстШтрихкода = ПодготовкаДанныхДляКода(); Если ПустоеЗначение(Сервис) = 0 Тогда Сервис.НарисоватьШтрихкод(Картинка,ТипЧислом,ТекстШтрихкода,0, ,Режим,,РежимВых); Картинка.РежимРисования(РежимРис); КонецЕсли; КонецПроцедуры //ВыводШтрихкодаВТаблицу
Получаем изображение кода на печатной форме.
Братишки, а у меня с телефона читаются русские буквы криво с такого qr-кода. Это в 7ке каких-то шрифтов не хватет или поколдовать что-то с кодировкой нужно?
Нужно в utf конвертировать.
Функция УТФ8(Стр)
Длина=СтрДлина(Стр);
Итог=»»;
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимв(Знак);
Если Код<128 Тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимв(«А»))И(Код<=КодСимв("п")) Тогда Итог=Итог+Симв(208)+Симв(144+Код-КодСимв("А")); ИначеЕсли (Код>=КодСимв(«р»))И(Код<=КодСимв("я")) Тогда Итог=Итог+Симв(209)+Симв(128+Код-КодСимв("р")); ИначеЕсли (Знак="ё") Тогда Итог=Итог+Симв(209)+Симв(145); ИначеЕсли (Знак="Ё") Тогда Итог=Итог+Симв(208)+Симв(129); КонецЕсли; КонецЕсли; КонецЦикла; Возврат Итог; КонецФункции
Добрый день, подскажите пожалуйста где скачать последнюю версию FormEx.dll? Мы поставили от 16/12/20, но там нет команды «РежимРисования».
Для пробивки чека на мобильном кассовом аппарате хочу вывести КМ в DATAMATRIX на Счете в кассу.
Добрый день!
Адрес сайта автора библиотеки .
У вас проблема скорее всего не в версии библиотеки. Версия у вас последняя, у меня предыдущая и все работает. Сомневаюсь что автор убрал данный метод у объекта.
Вы скорее всего не правильно вызываете метод РежимРисования.
Там где у вас печатная форма — должна быть вставлена картинка. В момент открытия печатной формы у вас должна вызываться процедура в которую передается объект картинка (эта процедура вставлена в строку на закладке Текст, свойства картинки).. В моем случае это выглядит так — ВыводШтрихкодаВТаблицу(ИсхТабл.ТекущийОбъект, 58, ,, ,).
Далее в модуле обработки эта экспортная процедура вызывается и переданная объект картинка перехватывается уже в коде через параметр и уже у этого объекта вызывается метод РежимРисования.
Процедура ВыводШтрихкодаВТаблицу(Картинка,ТипЧислом=58,ТекстШтрихкода,РежимРис=3,Режим, РежимВых=0) Экспорт
ТекстШтрихкода = УТФ8(ПодготовкаДанныхДляКода());
Если ПустоеЗначение(Сервис) = 0 Тогда
Сервис.НарисоватьШтрихкод(Картинка,ТипЧислом,ТекстШтрихкода,0, ,Режим,,РежимВых);
Картинка.РежимРисования(РежимРис);
КонецЕсли;
КонецПроцедуры //ВыводШтрихкодаВТаблицу
Если что то не работает — проверяйте загружается ли компонента?
Функция ЗагрузитьФормекс(ПроверкаДляПечатиQRкода=0) Экспорт //0 — формекс не загружен, 1 — Формекс успешно загружен, -1 — невозможно загрузить формекс
//Если ПустоеЗначение(ФормексЗагружен) = 1 Тогда
Попытка
Сервис = СоздатьОбъект(«Сервис»); //проверка того, что Формекс была уже загружена
Сервис.ВключитьРаскраскуТаблиц();
ФормексЗагружен = 1;
Исключение
Если ЗагрузитьВК(«Formex.dll»,,СсылкаФормекс)=0 Тогда
ФормексЗагружен = -1;
Возврат ФормексЗагружен;
КонецЕсли;
КонецПопытки;
Если ПустоеЗначение(Сервис)=1 Тогда
Попытка
Сервис = СоздатьОбъект(«Сервис»);
Сервис.ВключитьРаскраскуТаблиц();
ФормексЗагружен = 1;
Исключение
сообщить(«Неудачная попытка создания объекта Сервис. Возможно, нужно установить более новую версию formex.dll («+СсылкаФормекс+»)»);
ФормексЗагружен = -1;
Возврат ФормексЗагружен;
КонецПопытки;
КонецЕсли;
//КонецЕсли;
Если ПроверкаДляПечатиQRкода = 0 Тогда
ИначеЕсли ФормексЗагружен = 1 Тогда
стрВерсия = «»; нВерсия = Сервис.Версия(стрВерсия);
Если нВерсия < 33555843 Тогда //проверяем чтобы версия была не не ниже 2.0.5.131 иначе напечатанный QR-код будет нечитаем сканером сообщить("Установлена версия Formex.dll "+стрВерсия+". Для печати корректного QR-кода версия должна быть не ниже 2.0.5.131 ("+СсылкаФормекс+")","!!"); Возврат 0; КонецЕсли; Иначе сообщить("Не загружена внешняя компонента: Formex.dll ("+СсылкаФормекс+"). Она необходима для печати штрихкода.","!"); КонецЕсли; Возврат ФормексЗагружен; КонецФункции // ЗагрузитьФормекс
Почему вы не выложили тестовую обработку 1С77? По образцу намного проще и быстрее разбираться, чем по ходу мыслей в описании.