|
УНФ 3.0 Где хранятся КИЗы с криптохвостами, сканированные в расходную накладную ? | ☑ | ||
|---|---|---|---|---|
|
0
bvb
27.02.26
✎
14:27
|
Добрый день
Мне нужно сделать кастомизированную печатную форму (не путать с печатью этикеток) в которую будет выводиться сканированные КИЗы - полные (с криптохвостами) Не могу понять где они хранятся (в этикетки же они как то печатаются) В ТЧ "ШтрихкодыУпаковок" они в таком виде : (01)04603744326014(21)5O3dLBfJaDIZ8 |
|||
|
1
Джордж1
27.02.26
✎
15:09
|
(0)нигде. их запрещено хранить
Это какие это вы этикетки печатаете с криптоховоствами интересно |
|||
|
2
torgm
27.02.26
✎
16:07
|
(0) Хранить запрещено , но все делают, сделай свой регистр.
Для справки кизы эмитированные хранятся в отдельном регистре Пул маркировки кодов суз, 1С его обычно после ввода очищают, но многие этот момент правят и оставляют на память для перепечатки поврежденных этикеток. |
|||
|
3
Джордж1
27.02.26
✎
16:09
|
(2)это наверное для производителей/импортеров только
А вот говорят что ЧЗ не выдает КИЗ с крипотохвостами, а отдает PDF (или что-то аналогичное) который только напечатать можно |
|||
|
4
bvb
27.02.26
✎
16:19
|
К 1С восстанавливает исходный QR при печати кодов маркировки из формы подбора расходной накладной ?
Значит они либо где то есть, либо есть алгоритм восстановления их по данным "Пул кодов маркировки СУЗ" Вот распечатка из подбора расходной накладной (не вкладывается почемуто) В ней коды (восстановленные по данным 1С) Приложение ЧЗ читает - читает Если считать QR сканером - он будет с криптохвостом : 0104603744326014215"4%5)&+!naP-91EE0692lTxQPD5B7w5TTsY5dPF5zZ97sYEX4MPpk4AqaghA9rQ= Значит есть криптохвосты ? |
|||
|
5
Джордж1
27.02.26
✎
16:27
|
(4)Криптохвост только в QR-коде есть, а больше его нигде и не должно быть
|
|||
|
6
unenu
27.02.26
✎
16:32
|
возможно это вам поможет
https://infostart.ru/1c/reports/2236499/ |
|||
|
7
bvb
27.02.26
✎
16:48
|
(5)
Несокрушимая логика подсказывает мне. 1 . Чтобы напечатать QR код - нужен криптохвост 2. Чтобы напечатать криптохвост из 1С в печатной форме 1С- криптохвост должен быть в 1С ВЫвод : Криптохвост таки есть в 1С |
|||
|
8
Джордж1
27.02.26
✎
16:53
|
(7)"Чтобы напечатать QR код - нужен криптохвост" - только это могут делать производители и импортеры.
И то не факт, что они сами могут формировать QR-код, а не получать готовую печатную форму Вы производитель или импортер? |
|||
|
9
timurhv
27.02.26
✎
17:02
|
(1) Хранить не запрещено в рамках бизнес-процесса и последующего удаления.
|
|||
|
10
akronim
27.02.26
✎
17:29
|
(7) Человек в (2) ответил подробно. Если ты эмитировал марку - криптохвост в пуле у тебя есть, чтобы ты смог напечатать. А когда ввел марку в оборот - то криптохвост у тебя отбирают, чтобы ты не смог напечатать второй раз.
Джордж немного не в теме, видимо. |
|||
|
11
Джордж1
27.02.26
✎
17:37
|
(10)"Если ты эмитировал марку - криптохвост в пуле у тебя есть, чтобы ты смог напечатать." - пул это что?
Я вот смотрю в ЛК ЧЗ - этикетки можно получить только готовые в формате pdf/eps Через API эмитированные марки вытащить нельзя, по крайней мере я ничего подобного не нашел Откуда же можно взять криптохвосты? |
|||
|
12
bvb
27.02.26
✎
18:16
|
Я импортер
Сведений по Эмиссии кодов маркировки СУЗ у меня сейчас в программе нет (и речь не про то) Я просто сосканировал КИЗы в подбор Расходной накладной И потом печатаю оттуда этикетку на которой полноценный QR код КИЗа читающейся приложением ЧЗ (находится товар) Вопрос : КАк 1С смогла напечатать QR если криптохвоста в программе после сканирования нет ? Я не говорю сейчас про печать кодов при эмиссии и вводе в оборот - это другая тема Что непонятного ? |
|||
|
13
Джордж1
27.02.26
✎
18:37
|
(12)а здесь ее случаем нет?
ШтрихкодыУпаковок.ШтрихКодУпаковки.ЗначениеШтрихкода Насколько я понимаю в Расходной накладной нужна полная КИЗ с криптохвостом на случай печати чека |
|||
|
14
H A D G E H O G s
27.02.26
✎
18:43
|
Всем привет.
Вот такой простой вопрос - если я, оптовик, купил коробку пива и упаковал ее в паллету - должен ли я передавать в ЧЗ данные об агрегации? |
|||
|
15
Джордж1
27.02.26
✎
18:45
|
(14)упаковал в паллету и дальше что?
|
|||
|
16
ejikbeznojek
27.02.26
✎
18:56
|
(14) если продаете эту паллету и клиент хочет в упд увидеть код паллеты, то нужно.
|
|||
|
17
Джордж1
27.02.26
✎
18:59
|
(16)в печатной форме УПД он код не увидит
|
|||
|
18
vis
27.02.26
✎
19:31
|
(11) РС "Пул кодов маркировки СУЗ"
|
|||
|
19
MWWRuza
гуру
27.02.26
✎
19:39
|
(11) Я вот смотрю в ЛК ЧЗ - этикетки можно получить только готовые в формате pdf/eps
Ага. А этикетки - безобразные там... Ни туда, ни сюда. На инфостарте лежит обработка, позволяющая распознать коды марок из пдф в нормальный текст. Я пользуюсь, и печатаю потом своей обработкой, так, как мне нравится :-) |
|||
|
20
Джордж1
27.02.26
✎
19:39
|
(18) как туда КИЗ попадают то?
|
|||
|
21
Джордж1
27.02.26
✎
19:41
|
(19) в вышеуказанный РС судя по наисанному КИЗ в сыром виде попадают. И вряд ли через распознавание
|
|||
|
22
MWWRuza
гуру
27.02.26
✎
19:43
|
(21) Ну, скорее всего. Но, это подходит только тем, кто СУЗ через API юзает... У кого обороты маленькие, и работает через ЛК - такого РС не будет.
|
|||
|
23
Джордж1
27.02.26
✎
19:46
|
(22) в апи я такого не нашел. Придется в код лезть
|
|||
|
24
ptiz
27.02.26
✎
20:11
|
(14) Только если этого хочет покупатель.
|
|||
|
25
ptiz
27.02.26
✎
20:14
|
(20) Попадают после обработки заказа СУЗом.
А после печати - удаляются. Ну как удаляются - сначала ставится признак "напечатано", и 1С не дает повторно печатать. А через некоторое время удаляются. Но иногда эти коды нужны - можно зафигачить какой-нибудь регистр-дубль и туда дублировать записи без удаления. Например, такое нужно, если коды заказывает тот, кто зареган в ЧЗ и является владельцем GTIN, а реально коды наносит производитель, и коды нужно в полном виде передать производителю по почте и т.п. |
|||
|
26
Джордж1
27.02.26
✎
20:13
|
(25) обработка то их как получает?
Хоть название напишите я код гляну |
|||
|
27
H A D G E H O G s
27.02.26
✎
20:21
|
&После("ПриЗаписи")
Процедура АЧЗПриЗаписи(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ТаблицаДанных=ЭтотОбъект.Выгрузить(,"ШтрихкодУпаковки,ПолныйКодМаркировки"); АЧЗМаркировка.ЗаполнитьКриптохвостыМарокИзТаблицыПолныхКодов(ТаблицаДанных); КонецПроцедуры Процедура ЗаполнитьКриптохвостыМарокИзТаблицыПолныхКодов(ТаблицаДанных) Экспорт МассивШтрихкодов=ТаблицаДанных.ВыгрузитьКолонку("ШтрихкодУпаковки"); Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ШтрихкодыУпаковокТоваров.Ссылка КАК Ссылка |ИЗ | Справочник.ШтрихкодыУпаковокТоваров КАК ШтрихкодыУпаковокТоваров |ГДЕ | ШтрихкодыУпаковокТоваров.АЧЗКриптохвост = """" | И ШтрихкодыУпаковокТоваров.Ссылка В(&МассивШтрихкодов)"; Запрос.УстановитьПараметр("МассивШтрихкодов",МассивШтрихкодов); Разделитель = АЧЗОбщегоНазначенияКлиентСервер.ПолучитьРазделительКриптохвоста(); БуферРазделитель=ПолучитьБуферДвоичныхДанныхИзСтроки(Разделитель); ТаблицаДанных.Индексы.Добавить("ШтрихкодУпаковки"); Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СтрокаТаблицыДанных=ТаблицаДанных.Найти(Выборка.Ссылка,"ШтрихкодУпаковки"); Если СтрокаТаблицыДанных=Неопределено Тогда Продолжить; КонецЕсли; ПолныйКодМаркировки=СтрокаТаблицыДанных.ПолныйКодМаркировки; Если ПолныйКодМаркировки="" Тогда Продолжить; КонецЕсли; Криптохвост=АЧЗМаркировкаКлиентСервер.ПолучитьКриптохвостИзПолногоКодаМаркировки(ПолныйКодМаркировки,БуферРазделитель); Если Не ЗначениеЗаполнено(Криптохвост) Тогда Продолжить; КонецЕсли; АЧЗОбщегоНазначения.УстановитьЗначениеРеквизитаОбъекта(Выборка.Ссылка,"АЧЗКриптохвост",Криптохвост,Истина,Истина); КонецЦикла; КонецПроцедуры Функция ПолучитьКриптохвостИзПолногоКодаМаркировки(ПолныйКодМаркировки, БуферРазделитель=Неопределено) Экспорт Если БуферРазделитель=Неопределено Тогда Разделитель = АЧЗОбщегоНазначенияКлиентСервер.ПолучитьРазделительКриптохвоста(); БуферРазделитель=ПолучитьБуферДвоичныхДанныхИзСтроки(Разделитель); КонецЕсли; Результат=""; Буфер=ПолучитьБуферДвоичныхДанныхИзBase64Строки(ПолныйКодМаркировки); МассивБуферов=Буфер.Разделить(БуферРазделитель); Если МассивБуферов.Количество()<=1 Тогда Возврат Результат; КонецЕсли; БуферКриптохвоста=МассивБуферов[МассивБуферов.ВГраница()]; Результат=ПолучитьСтрокуИзБуфераДвоичныхДанных(БуферКриптохвоста); Возврат Результат; КонецФункции |
|||
|
28
TTimur
01.03.26
✎
19:39
|
(26) По опыту работы с лекарственными препаратами. Из СУЗ производитель запросом в API может получить КИЗ с криптохвостом только 1 (один) раз. Там, в API, реализовано пакетное получение массива КИЗ из набора "буферов": на каждый запрос на эмиссию КИЗ на учетных серверах создается несколько "буферов", с которых можно запрашивать эти самые хвостатые КИЗ для распечатки этикеток. Пока буфер не считан полностью, якобы можно запрашивать повторно (у меня так и не получилось это реализовать, сервер меня отфутболивал, но не очень было надо, я и не разбирался). После считывания всех КИЗ из определенного буфера, этот буфер закрывается и больше никто (никто, даже производитель) не может получить хвостатые КИЗ. Не записал в регистр и криво распечатал - досвидос, никакой повторной печати. В дальнейшем обмене во всех операциях по API (завершение нанесения, агрегация, выемка из упаковок, выпуск продукции, реализация и т.д.) участвуют только обрезанные КИЗ. Технически сканером можно получить полный КИЗ, возможно (не помню уже) он в рознице при сканировании в РМК временно хранится в каком-то пуле штрихкодов, но, опять таки, он везде для ЭДО в типовых обрезается, поэтому скорее всего он там тоже обрезанный.
|
|||
|
29
MWWRuza
гуру
01.03.26
✎
19:52
|
(28) Из СУЗ производитель запросом в API может получить КИЗ с криптохвостом только 1 (один) раз.
А отдают то хоть строкой? Или только их убогие печатные формы, как при маркировке остатков на сайте в ЛК - ??? |
|||
|
30
Джордж1
01.03.26
✎
22:31
|
(28)"он везде для ЭДО в типовых обрезается" - и не удивительно, в ЭДО то он и не нужен. А вот для реализация в рознице нужен - что вы ККМ передать
|
|||
|
31
1cVandal
02.03.26
✎
08:25
|
(3) выдает в csv
|
|||
|
32
Ёпрст
гуру
02.03.26
✎
09:50
|
(14) да. Если хочешь продавать паллету потом кому-то.
Через api агрегацию надо делать |
|||
|
33
Ёпрст
гуру
02.03.26
✎
09:52
|
Только учти такую вещь, если хоть раз коробка/паллета разагрегирована, и не важно, что отгрузки потом не было/отменили, то фарш невозможно провернуть назад - в тот же номер коробки/паллеты обратно уже ничего не запихаешь. Короче, повторно нельзя использовать номер коробки/паллеты, даже если никаких движений по ним не было.
|
|||
|
34
Ёпрст
гуру
02.03.26
✎
09:55
|
(0) учти такую вещь, не вздумай показывать полную марку в табличном поле - поймаешь в 98% случаев вылет 1с-ины. Не периваривает она некоторые спецсимволы. Хранить можешь, да, как и печатать потом.
|
|||
|
35
paramedic
02.03.26
✎
12:14
|
(34) Вылет может и не поймаешь, но ошибку передачи между сервером и клиентом - точно. 1С все полные коды в БАЗЕ64 гоняет.
|
|||
|
36
H A D G E H O G s
02.03.26
✎
13:48
|
(33) Так, стоп.
Вот у меня есть паллета1 на 100 коробов. Я сформировал новую паллету2 на 20 коробов из этих 100 коробов. Отправил агрегацию на паллеты2 на 20 коробов. Паллета1 считается на 80 коробов или пустая по данным ЧЗ? |
|||
|
37
Ёпрст
гуру
02.03.26
✎
14:00
|
(36) Да, она дезагрегирована (расформирована)
|
|||
|
38
Ёпрст
гуру
02.03.26
✎
14:01
|
При запросе - покажет изначальный состав её, но отгрузить с ней не даст, будет ошибка в чз.
|
|||
|
39
Ёпрст
гуру
02.03.26
✎
14:11
|
Не совсем точно написал, можно трансформировать паллету1, если сделать соответствующий запрос через api, а уже потом лепить паллет2.
Если этого не сделать, то паллет1 разагрегируется автоматом при создании паллет2. https://честныйзнак.рф/business/doc/?id=Формирование_упаковок.html |
|||
|
40
H A D G E H O G s
02.03.26
✎
15:37
|
(39) Ясно. Спасибо большое.
|
|||
|
41
Джордж1
02.03.26
✎
16:01
|
Добавлю что разагрегация производится автоматически при любой операции операции с товаром из транспортной упаковки
|
|||
|
42
Злопчинский
02.03.26
✎
20:32
|
Удалил
|
|||
|
43
akronim
03.03.26
✎
11:07
|
(20) Документ Заказ на эмиссию - в 1С. Какой метод api он мспользует - это не знаю, никогда не интересовался.
|
|||
|
44
Garykom
гуру
03.03.26
✎
12:11
|
(14) Не обязан но можешь для удобства
|
|||
|
45
Garykom
гуру
03.03.26
✎
12:13
|
(39) Тут надо уточнить что маркировки они разные
И может быть разное поведение про автоматом |
|||
|
46
bvb
03.03.26
✎
14:43
|
Короче я достал КИЗы с криптохвостами сканированные в расходную накладную так :
Функция ПолучитьТаблицуКИЗов (Ссылка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ШтрихкодыУпаковок.ШтрихкодУпаковки КАК ШтрихкодУпаковки |ПОМЕСТИТЬ ВТ_ШтрихкодыУпаковок |ИЗ | Документ.РасходнаяНакладная.ШтрихкодыУпаковок КАК ШтрихкодыУпаковок |ГДЕ | ШтрихкодыУпаковок.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПулКодовМаркировкиСУЗ.КодМаркировки КАК КодМаркировки, | ПулКодовМаркировкиСУЗ.GTIN КАК GTIN, | ПулКодовМаркировкиСУЗ.Номенклатура КАК Номенклатура, | ПулКодовМаркировкиСУЗ.ПолныйКодМаркировки КАК ПолныйКодМаркировкиbase64, | ПулКодовМаркировкиСУЗ.Номенклатура.ТоварнаяНоменклатураВЭД КАК КодТНВЭД |ИЗ | РегистрСведений.ПулКодовМаркировкиСУЗ КАК ПулКодовМаркировкиСУЗ |ГДЕ | ПулКодовМаркировкиСУЗ.КодМаркировки В | (ВЫБРАТЬ | ВТ_ШтрихкодыУпаковок.ШтрихкодУпаковки.ЗначениеШтрихкода | ИЗ | ВТ_ШтрихкодыУпаковок КАК ВТ_ШтрихкодыУпаковок)"; Запрос.УстановитьПараметр("Ссылка",Ссылка); Возврат Запрос.Выполнить().ВЫгрузить(); КонецФункции |
|||
|
47
bvb
03.03.26
✎
14:46
|
В запросе они в кодировке base64
КИЗ_с_Криптохвостом = ПреобразоватьBase64ВСтроку(Стр.ПолныйКодМаркировкиbase64); КИЗ_с_Криптохвостом = СтрЗаменить(КИЗ_с_Криптохвостом, ОбщегоНазначенияБПОКлиентСервер.РазделительGS1(), ""); Если нужно обычной строкой так : Функция ПреобразоватьBase64ВСтроку(СтрокаBase64) Экспорт Данные = Base64Значение(СтрокаBase64); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); Данные.Записать(ИмяВременногоФайла); ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяВременногоФайла, "UTF-8"); Попытка УдалитьФайлы(ИмяВременногоФайла); Исключение КонецПопытки; Возврат ТекстовыйДокумент.ПолучитьТекст(); КонецФункции |
|||
|
48
H A D G E H O G s
03.03.26
✎
19:30
|
(47)
ПолучитьДвоичныеДанныеИзBase64Строки() ПолучитьСтрокуИзДвоичныхДанных() |
|||
|
49
bvb
04.03.26
✎
12:41
|
Ну и вишенка на торт печать :
КИЗ_с_Криптохвостом_Исходный = KMS_ОбщийМодульКлиентСервер.ПреобразоватьBase64ВСтроку(Стр.ПолныйКодМаркировкиbase64); КИЗ_с_Криптохвостом_БезGS1 = СтрЗаменить(КИЗ_с_Криптохвостом_Исходный, ОбщегоНазначенияБПОКлиентСервер.РазделительGS1(), ""); ОбластьМакета.Параметры.КИЗ_с_Криптохвостом_БезGS1 = КИЗ_с_Криптохвостом_БезGS1; //DataMatrix************************************** ПараметрыШтрихкода = Новый Структура; ПараметрыШтрихкода.Вставить("Ширина", 200); ПараметрыШтрихкода.Вставить("Высота", 200); ПараметрыШтрихкода.Вставить("ОтображатьТекст", ЛОЖЬ); ПараметрыШтрихкода.Вставить("ТипВходныхДанных", 0); //строка - исходный штрихкод с криптохвостом ПараметрыШтрихкода.Вставить("ТипКода", 24); // - Datamatrix GS1ASCII: ПараметрыШтрихкода.Вставить("Штрихкод", КИЗ_с_Криптохвостом_Исходный); РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода); Если РезультатГенерацииШтрихкода.Картинка <> Неопределено Тогда ОбластьМакета.Рисунки.Квадрат100Пикселей.Картинка = РезультатГенерацииШтрихкода.Картинка; Иначе ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'При генерации картинки штрихкода произошла ошибка'")); КонецЕсли; распечатываемый штрихкод полностью валиден и распознается приложением "Честный знак" с мобильного устройства Тема закрыта. А то тут пишут : "один раз", "хранить запрещено" |
|||
|
50
akronim
10.03.26
✎
16:23
|
Тема закрыта.
А то тут пишут : "один раз", "хранить запрещено" Ну понятно, что к ЧЗ ты не прислушиваешься, в плане хранить запрещено - не осуждаю. Но если в тебе так силен дух авантюризма - из 1С введи в оборот эту марку, запусти стандартное РЗ на очистку пула и попробуй методом из (46) повторно распечатать марку. Вдруг окажется, что так пишут не без оснований. |
|||
|
51
vis
10.03.26
✎
18:46
|
(50) А если без "запусти стандартное РЗ на очистку пула" ?
|
|||
|
52
akronim
11.03.26
✎
10:14
|
(51) А это надо экспериментировать. У меня как-то давно ПолныйКодМаркировки очищался после ввода в оборот, хотя все РЗ были выключены, но почему - не разбирался. Поэтому написал на всякий случай, чтоб гарантированно.
|
|||
|
53
paramedic
11.03.26
✎
10:23
|
(52) Очищается он, очищается. Просто когда сканируется в расходный документ он опять туда пишется, НО без привязки к номенклатуре. Получается просто записывается КМ. Записываются только КодМаркировки, GTIN, ПолныйКодМаркировкиbase64, ХешСуммаКодаМаркировки, Организация, ТипШтрихкода.
В принципе, через GTIN можно попробовать выдернуть номенклатуру, но в самом регистре она не заполняется. |
|||
|
54
TTimur
11.03.26
✎
11:09
|
(29) Строкой отдают, печатные формы потом сам свои делаешь или передаешь информацию "оператору печати", который тебе за денежку это все красиво на чем-нибудь печатает
|
|||
|
55
MWWRuza
гуру
11.03.26
✎
11:24
|
(54) Ну, по API то понятно, еще там бы они ограничили...
А мелким, которые работают непосредственно в ЛК, без API, такую возможность убрали... Раньше можно было выбрать CSV, PDF, и еще какой-то формат под принтер... А со середины прошлого года, CSV убрали в ЛК, оставили только два последних :-( |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |