Имя: Пароль:
1C
 
Формирование штрих кода в кодировке 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;
РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Картинка = РезультатШтрихкод.Картинка;
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn