|
Формирование штрих кода в кодировке Windows-1251 | ☑ | ||
---|---|---|---|---|
0
slimuz
06.02.25
✎
13:08
|
Формирую штрих код через внешнюю компоненту "1С:Печать штрихкодов", формируется в кодировке UTF-8, нам нужно в Windows-1251. Написал в техподдержку 1С, их ответ:
В компоненте есть возможность передавать данные в бинарном виде через base64.
* ТипВходныхДанных - Число - тип входных данных Возможные значения: 0 - Строка, 1 - Base64 ставить ТипВходныхДанных = 1 и в Штрихкод - передавать кодированную в Base64 необходимую информацию которая должны быть в ШК Уточняю снова, снова ответ: Символы (побайтно собрать строку) в кодировке Windows-1251 вы переводите в Base64
и передаете в ВК Устанавливаете атрибут ТипВходныхДанных = 1 в Штрихкод - предавать кодированную в Base64 необходимую информацию которая должны быть в ШК Так же возможно для вашей задачи подойдут DataMatrix (ASCII) DataMatrix GS1 (ASCII) Все равно не понял, что имеется в виду. Но начал пытаться закодировать текст в Windows-1251, потом в Base64, следующим образом: Функция ПерекодироватьВWin1251(Знач ИсхТекст) Экспорт ПутьКФайлу=ПолучитьИмяВременногоФайла("txt"); ЗаписьТекста=Новый ЗаписьТекста(ПутьКФайлу, "Windows-1251"); ЗаписьТекста.ЗаписатьСтроку(ИсхТекст); ЗаписьТекста.Закрыть(); // Читаем файл как двоичные данные ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу); // Удаляем временный файл УдалитьФайлы(ПутьКФайлу); // Возвращаем байты Возврат ДвоичныеДанные; КонецФункции Функция ПреобразоватьВBase64(Знач ДвоичныеДанные) Экспорт Возврат Base64Строка(ДвоичныеДанные); КонецФункции Функция СформироватьЗначениеЛШК(ПодразделениеКод,Номер,ДатаДок,Текст) // Получаем байты строки в Windows-1251 БайтыВ1251 = ПерекодироватьВWin1251("[3"+СокрП(Номер)+"]"+"["+СокрП(Номер)+"]"+"["+ДатаДок+"]"+"[Отправитель "+ПодразделениеКод+"]"+Текст); // Преобразуем байты в Base64 Base64Строка = ПреобразоватьВBase64(БайтыВ1251); ШК=Base64Строка; СтуктураШК = Новый Структура("ШК", ШК); Возврат СтуктураШК; КонецФункции Штрихкод формируется с надписью "invalid barcode!" |
|||
1
arsik
06.02.25
✎
13:08
|
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Штрихкод, "windows-1251");
ШтрихкодBase64 = Base64Строка(ДвоичныеДанныеСтроки); |
|||
2
Garykom
06.02.25
✎
13:23
|
(0) А не пробовал сначала изучить матчасть?
Что такое штрихкоды разных видов и что внутри можно кодировать? Тупые вопросы отпадут И понятен будет совершенно правильный ответ саппорта! |
|||
3
slimuz
06.02.25
✎
13:35
|
А теперь понял, что за DataMatrix (ASCII), DataMatrix GS1 (ASCII). Нам нужен штрихкод типа PDF417. Не знал, что это имеет значение
|
|||
4
Garykom
06.02.25
✎
13:39
|
(3) wiki:PDF417
PDF417 поддерживает три типа данных: текст (ASCII), байты и числа.
wiki:ASCII Стандарт ASCII представляет собой 7-битный код без рекомендаций относительно контроля чётности, содержащий 27 = 128 кодовых позиций[4], в которых размещены следующие символы
т.е. надеяться на 8 бит (256 символов) и OEM/ANSI кодировку с кириллицей нельзя свою строку (пофиг в какой кодировке) преобразуем в Base64 wiki:Base64 Base64 — стандарт кодирования двоичных данных при помощи только 64 символов ASCII
и пишем в ШК |
|||
5
arsik
06.02.25
✎
13:42
|
ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода(); ПараметрыШтрихкода.ШтрихКод = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(Штрихкод, "windows-1251")); ПараметрыШтрихкода.ТипВходныхДанных = 1; ПараметрыШтрихкода.ТипКода = 6; РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода); Картинка = РезультатШтрихкод.Картинка; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |