УНФ 3.0 : Вывод КИЗ Честный Знак в произвольную печатную форму
Добрый день
Нужно вывести в табличный документ произвольной печатной формы , КИЗ ЧЗ (полноценный КИЗ с криптохвостом, так чтобы он читался и распознавался ЧЗ)
Я делаю это так :
Получаю из регистра ПулКодовМаркировкиСУЗ.ПолныйКодМаркировки как base64
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 200);
ПараметрыШтрихкода.Вставить("Высота", 200);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", ЛОЖЬ);
ПараметрыШтрихкода.Вставить("ТипВходныхДанных", 0); //строка - исходный штрихкод с криптохвостом
ПараметрыШтрихкода.Вставить("ТипКода", 24); // - Datamatrix GS1ASCII:
ПараметрыШтрихкода.Вставить("Штрихкод", ПреобразоватьBase64ВСтроку(ПолныйКодМаркировки );
РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Если РезультатГенерацииШтрихкода.Картинка <> Неопределено Тогда
ОбластьМакета.Рисунки.Квадрат100Пикселей.Картинка = РезультатГенерацииШтрихкода.Картинка;
КонецЕсли;
Беда в следующем - Функция ПреобразоватьBase64ВСтроку работает медленно через временный файл :
// Преобразовывает строку в формате Base64 в обычную строку
// Параметры:
// СтрокаBase64 - Строка - строка в формате Base64.
//
// Возвращаемое значение:
// Строка - получившаяся строка.
//
Функция ПреобразоватьBase64ВСтроку(СтрокаBase64) Экспорт
Данные = Base64Значение(СтрокаBase64);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
Данные.Записать(ИмяВременногоФайла);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяВременногоФайла, "UTF-8");
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
КонецПопытки;
Возврат ТекстовыйДокумент.ПолучитьТекст();
КонецФункции
Чем ее можно заменить или использовать другой алгоритм вывода ШК на печать
Или я беру данные штрихкода не из того реквизита регистра?
Нужно вывести в табличный документ произвольной печатной формы , КИЗ ЧЗ (полноценный КИЗ с криптохвостом, так чтобы он читался и распознавался ЧЗ)
Я делаю это так :
Получаю из регистра ПулКодовМаркировкиСУЗ.ПолныйКодМаркировки как base64
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 200);
ПараметрыШтрихкода.Вставить("Высота", 200);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", ЛОЖЬ);
ПараметрыШтрихкода.Вставить("ТипВходныхДанных", 0); //строка - исходный штрихкод с криптохвостом
ПараметрыШтрихкода.Вставить("ТипКода", 24); // - Datamatrix GS1ASCII:
ПараметрыШтрихкода.Вставить("Штрихкод", ПреобразоватьBase64ВСтроку(ПолныйКодМаркировки );
РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Если РезультатГенерацииШтрихкода.Картинка <> Неопределено Тогда
ОбластьМакета.Рисунки.Квадрат100Пикселей.Картинка = РезультатГенерацииШтрихкода.Картинка;
КонецЕсли;
Беда в следующем - Функция ПреобразоватьBase64ВСтроку работает медленно через временный файл :
// Преобразовывает строку в формате Base64 в обычную строку
// Параметры:
// СтрокаBase64 - Строка - строка в формате Base64.
//
// Возвращаемое значение:
// Строка - получившаяся строка.
//
Функция ПреобразоватьBase64ВСтроку(СтрокаBase64) Экспорт
Данные = Base64Значение(СтрокаBase64);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
Данные.Записать(ИмяВременногоФайла);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяВременногоФайла, "UTF-8");
Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение
КонецПопытки;
Возврат ТекстовыйДокумент.ПолучитьТекст();
КонецФункции
Чем ее можно заменить или использовать другой алгоритм вывода ШК на печать
Или я беру данные штрихкода не из того реквизита регистра?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) полный код, все правильно в пуле кодов маркировки хранится..
а вот преобразование попробуй функцией из БСП сделать, через двоичные данные.
по сути тоже самое что и у тебя, только без записи в файл, а значит будет быстрее
а вот преобразование попробуй функцией из БСП сделать, через двоичные данные.
по сути тоже самое что и у тебя, только без записи в файл, а значит будет быстрее
// Декодирует штрихкод по алгоритму Base64 в строковый формат.
//
// Параметры:
// ШтрихкодВBase64 - Строка - закодированный штрихкод.
// Возвращаемое значение:
// Строка - Декодированный штрихкод.
Функция Base64ВШтрихкод(Знач ШтрихкодВBase64) Экспорт
ДвоичныеДанные = Base64Значение(ШтрихкодВBase64);
Если Не ЗначениеЗаполнено(ДвоичныеДанные) Тогда
Штрихкод = ШтрихкодВBase64;
Иначе
Штрихкод = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные);
КонецЕсли;
Возврат Штрихкод;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот