|
|
|
Формирование штрих кода в кодировке 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; РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода); Картинка = РезультатШтрихкод.Картинка; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |