Дублирование кода Честный знак

1. vasiliy_b 284 29.12.23 14:53 Сейчас в теме
Всем привет, нужно решить такую задачу. Нам необходимо наклеить дубликат честного знака на упаковку, для отправки товара на маркетплейсы. Данный товар, через честный знак, на нашу организацию не переводится.
Следовательно ни какой информации о товаре в РС ПулКодовМаркировкиСУЗ - нет.
Попробовал напечатать ту информацию которую выдает сканер, но полученный ШК не проходит проверку. Как я понял в ШК есть еще не печатаемые символы, которые сканер не передает.
Попробовал типовыми средствами разделить полученную строку от сканера
командой
РазборКодаМаркировкиИССлужебныйКлиент.РазобратьКодМаркировки(ШтрихкодВФорматеGS1)

тут получил структуру в которой есть такие данные как EAN, GTIN, СерийныйНомер, НормализованныйКодМаркировки и пр. сопутствующие данные. Однако при наличии всех этих данных, добиться корректного кода пока не получается.

	ШтрихкодВФорматеGS1 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВФорматеGS1(КМ_Кратко);
	
	СтруктураКМ = РазборКодаМаркировкиИССлужебныйКлиент.РазобратьКодМаркировки(ШтрихкодВФорматеGS1);
	
    ПараметрыШтрихкода = ПечатьЭтикетокИСМПКлиентСервер.СтруктураПечатиЭтикетки();
	ПараметрыШтрихкода.Вставить("Штрихкод"		, ПолныйКодМаркировки);
	ПараметрыШтрихкода.Вставить("GTIN"			, СтруктураКМ.СоставКодаМаркировки.GTIN);
	ПараметрыШтрихкода.Вставить("Док"			, Документы.ПриобретениеТоваровУслуг.ПустаяСсылка());
	ПараметрыШтрихкода.Вставить("ВидПродукции"	, ВидыПродукцииИС);
	ПараметрыШтрихкода.Вставить("ЕстьВПулеКодовМаркировки"	, Истина);
		
		ДанныеКодаМаркировки = Новый Структура;
		
		ДанныеКодаМаркировки.Вставить("ПараметрыСканирования"	, "");
		ДанныеКодаМаркировки.Вставить("ДанныеШтрихкода"			, ПараметрыШтрихкода);
		//СтруктураПараметров.Вставить("ДанныеШтрихкода"			, ПолеВвода);
		
		ПараметрыСканирования = ДанныеКодаМаркировки.ПараметрыСканирования;
		ДанныеШтрихкода       = ДанныеКодаМаркировки.ДанныеШтрихкода;
		
		Если Не ДанныеШтрихкода.ЕстьВПулеКодовМаркировки Тогда
			ШтрихкодированиеИСМПСлужебный.СохранениеКодаМаркировкиВПул(
				ШтрихкодированиеИС.ИнициализироватьРезультатОбработкиШтрихкода(),
				ДанныеШтрихкода,
				ПараметрыСканирования);
		КонецЕсли;
	
		Если ИнтеграцияИСПовтИсп.ЭтоПродукцияМОТП(ДанныеШтрихкода.ВидПродукции) Тогда
			КодМаркировки = РазборКодаМаркировкиИССлужебныйКлиентСервер.НормализоватьКодМаркировки(
				ДанныеШтрихкода.ДанныеРазбора,
				ДанныеШтрихкода.ВидПродукции,
				РазборКодаМаркировкиИССлужебныйКлиентСервер.НастройкиРазбораКодаМаркировкиДляСохраненияВПул());
		ИначеЕсли ИнтеграцияИСПовтИсп.ЭтоПродукцияИСМП(ДанныеШтрихкода.ВидПродукции) Тогда
			КодМаркировки = ДанныеШтрихкода.Штрихкод;
		Иначе
			КодМаркировки = ДанныеШтрихкода.Штрихкод;
		КонецЕсли;
		
		ХешСуммаКодаМаркировки = ИнтеграцияИС.ХешированиеДанныхSHA256(КодМаркировки);
		
		ОбъектыПечати = Новый Массив;
		
		ПараметрыШтрихкода = ПечатьЭтикетокИСМПКлиентСервер.СтруктураПечатиЭтикетки();
		ЗаполнитьЗначенияСвойств(ПараметрыШтрихкода, ДанныеШтрихкода);
		
		ПараметрыШтрихкода.ШаблонЭтикетки         = Объект.ШаблонЭтикетки;
		ПараметрыШтрихкода.Количество             = 1;
		ПараметрыШтрихкода.КодМаркировки          = КодМаркировки;
		ПараметрыШтрихкода.ХешСуммаКодаМаркировки = ХешСуммаКодаМаркировки;
		
		ОбъектыПечати.Добавить(ПараметрыШтрихкода);
		
		ДанныеДляПечати = Новый Структура;
		ДанныеДляПечати.Вставить("ОбъектыПечати"				, ОбъектыПечати);
		ДанныеДляПечати.Вставить("Документ"						, ДанныеШтрихкода.Док);
		ДанныеДляПечати.Вставить("КаждаяЭтикеткаНаНовомЛисте"	, Истина);
		ДанныеДляПечати.Вставить("ПакетнаяПечать"				, Ложь);
		ДанныеДляПечати.Вставить("РазрешитьПовторнуюПечать"		, Истина);
		ДанныеДляПечати.Вставить("РежимПечати"					, "Выборочно");
		ДанныеДляПечати.Вставить("ДополнительныеПараметры"		, Новый Структура);
		
		ПечатьЭтикетокИСМПКлиент.НапечататьЭтикеткиИСМП(ДанныеДляПечати, ЭтотОбъект);
Показать


Что я делаю не так, с честным знаком не работал, а задачу надо решить в ближайшее время.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. THEBESTolo4b 10 25.04.24 07:41 Сейчас в теме
(1) А с ЭДО подтянуть? плюс крипто хвост понадобится конечно.
2. user2083583 24.04.24 20:57 Сейчас в теме
Здравствуйте! Нашли решение? Вопрос у нас сейчас такой же актуальный…
4. nike-arz 25.04.24 11:06 Сейчас в теме
(1)
Вы разобрали код. Это хорошо, теперь соберите его и напечатайте.
У меня все работает.

У Вас при разборе должны обязательно быть GTIN, СерийныйНомер, КлючПроверки, КодПроверки.

Функция СформироватьПолныйКИЗ(СтруктураКМ) Экспорт

Если НЕ ЗначениеЗаполнено(СтруктураКМ.GTIN)
ИЛИ НЕ ЗначениеЗаполнено(СтруктураКМ.СерийныйНомер)
ИЛИ НЕ ЗначениеЗаполнено(СтруктураКМ.КлючПроверки)
ИЛИ НЕ ЗначениеЗаполнено(СтруктураКМ.КодПроверки)
Тогда
Возврат "";
КонецЕсли;

КодDataMatrix = "";
Идентификаторы = ИдентификаторыGS1();
мРазделительGS1 = РазделительGS1();

КодDataMatrix = Идентификаторы.GTIN+СтруктураКМ.GTIN
+ Идентификаторы.СерийныйНомер+СтруктураКМ.СерийныйНомер
+ мРазделительGS1
+ Идентификаторы.КлючПроверки+СтруктураКМ.КлючПроверки
+ мРазделительGS1
+ Идентификаторы.КодПроверки+СтруктураКМ.КодПроверки;

Возврат КодDataMatrix;

КонецФункции
Оставьте свое сообщение

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