诚实码码包上线前为什么要先模拟解析:查什么、怎么做
出口俄罗斯的工厂拿到码包,常见的做法是直接导进喷码机、开线。运气不好是这几种收场:跑到一半系统报"码用完了",可订单数还差几千;码印上去了,俄方扫出来说没有校验码;两批货用了同一段码,收货核验时才发现。这些问题没有一个出在产线上,全部出在码包文件本身,而且都能在开线前查出来。
我们把这一步叫码包模拟解析:码包进入赋码系统之前,用和产线相同的解析逻辑把整个文件跑一遍,逐码校验,出报告,合格的码才进入可用码池。下面讲清楚码包长什么样、要查什么、怎么做。
一、先看码包里装的是什么
诚实码(Честный знак,运营方 CRPT)的码在 СУЗ(订码管理站)下单发放。不管是俄方进口商导出后发给工厂,还是通过 API 直接拉取,工厂拿到的都是一批文本形式的码,每个码由四组数据组成,采用 GS1 应用标识符(AI)的写法:
| 组 | AI | 内容 | 长度 |
|---|---|---|---|
| 商品码 | 01 | GTIN,14 位数字,末位是校验位 | 固定 14 |
| 序列号 | 21 | 单件序列号,首位是欧亚经济联盟成员国标识(俄罗斯为 5 或 E) | 按品类不同:日化/家化/个护(ПП №1681)为 6 位;香水、轻工等为 13 位 |
| 校验密钥 | 91 | 密钥编号,CRPT 生成 | 4 位 |
| 校验码 | 92 | 加密校验值(俗称"加密尾巴"),CRPT 生成 | 44 位(个别品类 88 位) |
以日化品类为例,一个完整码不含分隔符共 76 个字符。写成一行大致是这样(示意,GTIN 为演示值):
01 04600000000013 21 5Ab7Q9 <GS> 91 EE07 <GS> 92 dGhpcyBpcyBhIGNyeXB0b3RhaWw=…
几个必须知道的细节:
- 分隔符 GS(ASCII 29,十六进制 0x1D)是不可见字符,只出现在变长字段之后:序列号(21)后面一个,密钥(91)后面一个。GTIN 是定长字段,01 后面不加分隔符。位置放错,系统就切不出字段。
- FNC1 不是数据里的字符。GS1 DataMatrix 要求码图首位是功能符 FNC1,它由生成码图的软件在编码时加上,不是在字符串开头再塞一个 GS。
- 序列号和校验字段只允许数字、大小写拉丁字母和规定的一组特殊符号,不会出现西里尔字母、空格、中文标点。
- 识别码(КИ)不是完整码。01 加 GTIN 加 21 加序列号这一段叫识别码,用于报文和单据;印在产品上的必须是带 91/92 的完整码。СУЗ 的"文档 → 打印/导出"能导出识别码的 CSV,那份文件不能用来打码,这是常踩的坑。
СУЗ 网页端的导出是图形文件:PDF 每次最多 500 个码,EPS 最多 2000 个,面向办公打印机或热转印标签机。产线在线喷码或激光打码需要的是文本码,一般通过 СУЗ API 从订单缓冲区拉取,或由俄方用 1C 等系统导出后转交。传递环节越多,文件被改坏的机会越多。
二、模拟解析要查的九项
下面是我们在客户产线上固化下来的检查清单,每一项对应一种发生过的故障。
| 序号 | 查什么 | 判定标准 | 查出来的典型问题 |
|---|---|---|---|
| 1 | 码数量 | 有效码数 = СУЗ 子订单数量 = 本次生产订单需求 | 分页导出漏一页;文件末尾截断;空行、BOM 头被当成码 |
| 2 | GTIN | 每个码的 GTIN 都等于本次 SKU 的 GTIN;14 位;模 10 校验位正确;与国家目录里已发布的商品卡一致 | 码包里混进同一订单下另一 GTIN 的子订单;换规格后新旧 GTIN 混用 |
| 3 | 序列号唯一 | 文件内去重后数量不变;与历史已用码库比对无重复 | 同一订单导出两次合并进码池;换电脑重新下载后再导一遍 |
| 4 | 91/92 字段格式 | 长度分别为 4 和 44(按品类核对);字符集合规;无空格、无西里尔字母 | 复制粘贴时尾部被截;校验码被当作 URL 转义 |
| 5 | 分隔符 | 每个码恰好两个 GS,位置在 21 组和 91 组之后,01 后面没有;不是文本 "GS"、"\x1D"、"<GS>" | 文件在 Excel 里打开保存过,GS 全部丢失;程序生成时写成了可见文本 |
| 6 | 文件编码与格式 | UTF-8;换行统一;无引号包裹;无前后空白 | Windows-1251 与 UTF-8 混用;Mac/Windows 换行混杂导致末码带回车 |
| 7 | 码状态 | 抽样或全量向 ГИС МТ 查询,状态应为"已发放未赋码"(Эмитирован. Выпущен);剩余有效期够本次排产 | 一部分码已在别的产线赋过;码已过期被作废 |
| 8 | 产线设备可接受 | 喷码机/激光机按 GS1 DataMatrix 模式接收;FNC1 首位、GS 转义写法与该机型一致;单码长度不超过机器上限;打出的码图用读码器回读,与原始字符串逐字节相等 | 机器把 GS 当普通字符打进去;模板字段映射错位,序列号和密钥互换 |
| 9 | 聚合模板匹配 | 码包对应 SKU 的装箱数、每托箱数与赋码系统里的聚合模板一致;码数是否为整箱倍数,尾箱怎么处理已定义 | 装箱规格改了模板没改,箱码底下件数对不上 |
第 7 项要单独说一下有效期。以日化品类为例,选"按赋码付费"的订单,工厂自行赋码的码自发放起 60 个日历天内必须提交赋码报告,逾期自动作废,钱不退;由服务商(印刷厂)赋码的为 545 天。选"按发行付费"的订单不受期限限制。码包在进口商那里放一个月才发来,工厂再排两周产,很容易撞线,解析报告应直接列出"最早发放日期"和"剩余天数"。
第 8 项是产线独有的检查。不同品牌的喷码机、激光机对 GS 的转义写法和 GS1 模式的开关方式都不一样,同一份码包换一台机器就可能打出结构错误的码,外观却完全正常。判断标准只有一个:读码器回读的字符串和原始码逐字节一致。
三、做法:离线解析、比对、报告、试产、上线
- 离线解析。码包导入赋码系统的入口就是解析点,不接产线。解析按字节做:逐行读取,按 AI 切字段,校验每一项,异常码单独列出并附原因。整个过程在办公室完成,产线不用停。
- 与订单比对。解析结果与三样东西对:СУЗ 订单号和子订单数量、工厂自己的生产订单(SKU、数量、排产日期)、历史码库(防重复)。三边对得上,码包才算和这次生产"绑定"了。
- 出报告。报告分三级:通过、警告、阻断。数量差、GTIN 混入、分隔符丢失是阻断,不得上线;剩余有效期紧张、尾箱不整是警告,需要人确认;通过的码进入本订单专属的可用码池,其它订单取不到。报告留档,出了问题能追到哪一份文件、谁确认的。
- 小批量试产。用正式码(不是沙盒测试码,测试码在正式系统里不被承认)打几十到几百件,走完整链路:取码、打印、视觉回读、剔除、记账。回读结果再做一次解析比对,确认机器没有改坏码。试产用掉的码按正常流程提交赋码报告,不要留在缓存里混进下一批。
- 正式上线。码池按订单锁定,产线按批预取;切换订单时强制清空工位缓存并做一次取码自检。多订单混线时的码包切换见多订单混线生产时,诚实码码包切换怎么做。
四、几个真实发生过的情况
以下是多家出口俄罗斯的工厂在上线阶段遇到的情况,隐去了客户信息。
数量差了几十个。订单十万,文件实际 99,950 行,原因是导出时分页,最后一页没勾。产线跑到最后一箱才发现码不够,只能停线等补码。解析第 1 项就能拦住。
转义错了。俄方用 Excel 整理过码文件再发来,GS 全被吃掉。喷码机照常打印,手机也能扫出一串字符,但俄方扫描时显示"缺少校验码",因为系统切不出 91/92 字段。整批返工重贴。解析第 5 项直接判阻断。
重复码。两次下载同一订单,两份文件都导进了码池,同一个码打在两件货上。第一件投入流通没问题,第二件被判无效。解析第 3 项跨文件去重能拦住,前提是码池是按订单管理的,而不是"来一份进一份"。
混进其他 GTIN。同一个 СУЗ 订单下有两个规格的子订单,导出时全选。产线打 A 规格,码包里有三成是 B 规格的 GTIN。码能打、能扫,但商品与码对不上,俄方核验判不一致。解析第 2 项按 GTIN 分组统计,一眼能看出来。
五、不改产线节拍的实现方式
所有校验在开线前完成,是不动节拍的前提。产线运行时只做四个动作:从本地码池取码、打印、回读、记账。三点保证节拍不受影响:
- 码池预加载。合格码提前推到赋码工位的本地缓存,按批次预取,打码时不做任何联网校验,取码延迟在毫秒级。
- 回读校验并行。视觉工位在喷码工位下游,回读和比对在自己的节拍里做,不插进喷码的触发链路。
- 剔除不停线。回读失败的产品分流剔除,剔除结果回写码池,该码标记为不可用,不重发、不补打,产线不减速。
模拟解析花的是办公室的几分钟,换来的是产线不用在运行中处理码的问题。这道工序的成本和一次停线返工比,不在一个量级。码包导入即做模拟解析、合格码按订单锁入码池、产线赋码、视觉回读、三级聚合到报关数据的衔接,做在同一套产线系统里。办理全流程见俄罗斯诚实码办理全流程,聚合环节的数据错误见三级聚合的常见数据错误。
常见问题
- 诚实码码包里的一个码由哪几部分组成?
- 四组数据,按 GS1 应用标识符写法排列:01 加 14 位 GTIN;21 加序列号(日化品类 6 位,香水、轻工等 13 位,首位是欧亚经济联盟成员国标识);91 加 4 位校验密钥编号;92 加 44 位校验码。序列号和密钥之后各有一个不可见的 GS 分隔符(ASCII 29),GTIN 是定长字段,后面不加分隔符。
- 码包用 Excel 打开过还能用吗?
- 不建议用。Excel 打开 CSV 时会丢弃不可见的 GS 分隔符,保存后每个码的 91/92 字段就切不出来了,印上去的码在俄方扫描时会显示缺少校验码。码文件应用文本编辑器或解析程序处理;已经被 Excel 保存过的文件,稳妥的做法是从 СУЗ 重新导出。
- 码包上线前模拟解析主要查什么?
- 九项:码数量与订单一致;GTIN 与本次 SKU 一致且校验位正确;序列号在文件内和历史码库里都不重复;91/92 字段长度与字符集合规;GS 分隔符数量与位置正确;文件编码与换行统一;码状态为已发放未赋码且剩余有效期够用;喷码机或激光机打出的码回读后与原始字符串逐字节一致;装箱规格与聚合模板匹配。
- 码包拿到后多久必须用掉?
- 取决于订单的付费方式和品类。以日化品类为例,"按赋码付费"的订单,工厂自行赋码的码自发放起 60 个日历天内要提交赋码报告,逾期自动作废且不退款;由服务商赋码的为 545 天。"按发行付费"的订单不受此期限限制。码包在进口商处停留的时间也计入,解析报告应列出最早发放日期和剩余天数。
评估你的产线合规改造方案
上海问源信息科技有限公司为出口俄罗斯的日化、乳制品、饮用水等制造企业提供诚实码产线赋码与数据合规方案,覆盖码包校验、产线赋码、视觉采集、三级聚合到报关衔接的完整环节。
扫码加微信