УНФ 3.0 : Вывод КИЗ Честный Знак в произвольную печатную форму

1. bvb 9 06.08.26 13:33 Сейчас в теме
Добрый день

Нужно вывести в табличный документ произвольной печатной формы , КИЗ ЧЗ (полноценный КИЗ с криптохвостом, так чтобы он читался и распознавался ЧЗ)
Я делаю это так :
Получаю из регистра ПулКодовМаркировкиСУЗ.ПолныйКодМаркировки как base64




ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 200);
ПараметрыШтрихкода.Вставить("Высота", 200);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", ЛОЖЬ);
ПараметрыШтрихкода.Вставить("ТипВходныхДанных", 0); //строка - исходный штрихкод с криптохвостом
ПараметрыШтрихкода.Вставить("ТипКода", 24); // - Datamatrix GS1ASCII:
ПараметрыШтрихкода.Вставить("Штрихкод", ПреобразоватьBase64ВСтроку(ПолныйКодМаркировки );
РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);

Если РезультатГенерацииШтрихкода.Картинка <> Неопределено Тогда
ОбластьМакета.Рисунки.Квадрат100Пикселей.Картинка = РезультатГенерацииШтрихкода.Картинка;

КонецЕсли;

Беда в следующем - Функция ПреобразоватьBase64ВСтроку работает медленно через временный файл :

// Преобразовывает строку в формате Base64 в обычную строку
// Параметры:
// СтрокаBase64 - Строка - строка в формате Base64.
//
// Возвращаемое значение:
// Строка - получившаяся строка.
//
Функция ПреобразоватьBase64ВСтроку(СтрокаBase64) Экспорт

Данные = Base64Значение(СтрокаBase64);

ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
Данные.Записать(ИмяВременногоФайла);

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяВременногоФайла, "UTF-8");

Попытка
УдалитьФайлы(ИмяВременногоФайла);
Исключение

КонецПопытки;

Возврат ТекстовыйДокумент.ПолучитьТекст();

КонецФункции

Чем ее можно заменить или использовать другой алгоритм вывода ШК на печать
Или я беру данные штрихкода не из того реквизита регистра?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 303 17.08.26 18:24 Сейчас в теме
(1) полный код, все правильно в пуле кодов маркировки хранится..
а вот преобразование попробуй функцией из БСП сделать, через двоичные данные.
по сути тоже самое что и у тебя, только без записи в файл, а значит будет быстрее
// Декодирует штрихкод по алгоритму Base64 в строковый формат.
// 
// Параметры:
//  ШтрихкодВBase64 - Строка - закодированный штрихкод.
// Возвращаемое значение:
//  Строка - Декодированный штрихкод.
Функция Base64ВШтрихкод(Знач ШтрихкодВBase64) Экспорт
	
	ДвоичныеДанные = Base64Значение(ШтрихкодВBase64);
	Если Не ЗначениеЗаполнено(ДвоичныеДанные) Тогда
		Штрихкод = ШтрихкодВBase64;
	Иначе
		Штрихкод = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные);
	КонецЕсли;
	
	Возврат Штрихкод;
	
КонецФункции
Показать
Albert_verhoshentsev; VyacheslavShilov; +2 Ответить
3. bvb 9 18.08.26 13:44 Сейчас в теме
(2) Спасибо большое. Это то что нужно.
Скорость формирования документа правда небольшая .

1000 этикеток печатались 11 минут.

Можно это ка кто порешать , с учетом того что конечный файл должен быть .pdf ?
4. Boneman 303 19.08.26 10:08 Сейчас в теме
(3) померяй быстродействие, может что-то еще в коде можно более оптимально переделать. Может что-то в цикле вызывается и это можно убрать или еще какие то моменты.
5. Albert_verhoshentsev 19.08.26 10:36 Сейчас в теме
(3) Сразу на принтер этикеток отправляй
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот