在本文中,我将尝试阐明香烟标签的技术部分和组成。
Habr读者请原谅我的简短评论。
什么是香烟标签?
贴有标签的香烟是在消费者包装上的香烟,其识别方法应遵循第381-FZ号法律的要求以及根据该法律通过的俄罗斯联邦政府的法规性法律。
因此,为了识别带有标签的商品,必须满足以下条件:
- 货物必须标有识别手段(标记代码)
- 信息监视系统应包含有关在香烟上应用识别手段的信息(由香烟制造商完成)
- 信息监控系统必须包含有关商品的可靠信息
我们提醒您,信息监视系统中是否存在有关香烟流通的信息,并不是识别带有标签的产品的条件。
对于那些在2020年7月1日之前购买纸质标签香烟的买家,无需担心并将剩余的东西提交到某个地方。制造商在2020年7月1日之前投入流通的卷烟在监控系统中被注册为“暂时无法追踪”,并且根据本规则,允许其进一步流通。
必须记住,在制造商的实验期内(2018-07.2019),标签的组成发生了变化。卷烟制造商已与CRPT运营商合作寻找可接受的解决方案。在此过渡期间生产的所有标记产品也都被标记。
让我们看一下今天生效的香烟标记代码的结构。
顺便说一下,它是某些欧洲国家/地区的卷烟标记代码的副本。因此,对于跨国公司而言,标签已成为超越俄罗斯制造商的竞争优势。
80个字符用于编码香烟和MRP(最高零售价)的序列号:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
MRC的编码-解码算法基于使用以下字母的将科比中MRC的大小转换为80进制数字系统:
编码编码
过程
- 例如,我们将MRC转换为戈比
- 我们找到整数部分以及将MRC除以数字系统的基数的余数(在我们的示例中为80)
- 我们从字母表中取一个等于余数的索引字符,并将其写入结果字符串的开头
- 2 3 0
- 4 0 (“A”)
- 14630 80: 182 70
- 70 : “.”
- 0, 182 80: 2 22
- 22 : “W.”
- 0, 2 80: 0 2
- 2 : “CW.”
- 0, : “ACW.”
- , 80, , , 0,
0.
1. : “A”2. “A”: 03. 80 3 ( , 4 ) 0, 04. 0 : 05. : “C”6. “C”: 27. 80 2 2, 128008. 12800 : 128009. : “W”10. “W”: 2211. 80 1 22, 176012. 1760 : 1456013. : “.”14. “.”: 7015. 80 0 70, 7016. 70 : 1463017. = 14360 14630
using System;
using System.Text;
namespace SharedUtil.Mrp
{
public static class MrpEncoder
{
public const string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"%&\'*+-./_,:;=<>?";
public static string Encode(uint value, byte paddingLength = 4)
{
var builder = new StringBuilder();
long result = value;
do
{
long rmdr;
result = Math.DivRem(result, Alphabet.Length, out rmdr);
builder.Insert(0, Alphabet[(int) rmdr]);
} while (result > 0);
return builder.ToString().PadLeft(paddingLength, Alphabet[0]);
}
public static uint Decode(string value)
{
uint result = 0;
for (int i = 0; i < value.Length; i++)
{
var characterIndex = Alphabet.IndexOf(value[i]);
if (characterIndex < 0)
{
throw new ArgumentException(string.Format("Invalid character: '{0}'", value[i]));
}
result += (uint) (Math.Pow(Alphabet.Length, value.Length - 1 - i) * characterIndex);
}
return result;
}
}
}
让我们考虑使用“ T&W”过滤器在香烟示例上的标记ORIGINAL COMPACT MRC 106“
这就是包装和块上的标记的样子:
很抱歉,我没有找到带有MRC 106的块,我用了115的照片。包装
标记:
04610030141527 00000Hd AB0o OnE1
一串29个字符,包含:
- GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .
- (7 ) . , 80 . EAN.
- (4 ). , 80- .
- (4 ). « » . . , , .
GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .« » GTIN EAN13.
块标记:
(01)04610030141534 (21)00000!& <FNC1> (8005)106000 <FNC1> (93)yikZ
至少41个字符的字符串,包含GS1格式的代码。为了清楚起见,添加了括号。包含GS1 <FNC1>符号
- (01)GTIN-14(14个数字字符)。包含计量单位“块”的前导“ 0”和EAN-13代码。类似于通常的EAN-13印刷在模块上。
- (21)序列号(7个字符)。制造商生成的识别码,由80个字符组成。对指定的GTIN-14而言是唯一的。
- (8005)(6个数字字符)。块的最高零售价格为科比。在我们的示例中,每块1060.00卢布(每包106卢布)
- (93) (4 ). « » . .
标记:
(01)14610030141524 (21)0011986 <FNC1> (8005)106000 <FNC1> (37)50
至少25个字符的字符串。包含GS1格式的强制性代码01和21。每个制造商自己确定运输包装的标记代码的组成。没有加密的尾巴。可以用作GS-1 DataMatrix代码。
制造商通常会复制GS-1(CODE-128)和GS-1 DataMatrix,这是一个示例:
其他制造商有时不指示MRC,而某些制造商会添加元素240来指示制造商的内部命名法。
让我们看一下标记运输包“ box”的代码示例:
- (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
- (21) (7 ). , IFT-14 .
- (8005) (6 ). , – «».
- (37) (2 ). .
标记:
(00)94610030141 0004634
20个字符的字符串。包含前缀00和强制性托盘(容器)物流代码SSCC。
除包装外,所有包装均带有机器可读的代码和人类可读的等效代码。如果由于某种原因扫描仪未扫描标记代码,这使您可以手动拨打标记代码。
聚合和分类。
标签系统具有包装的集合和分解等功能,直到最近才在工厂进行汇总。从工厂开始,不仅将有关所应用标记代码的信息,而且还将其汇总信息传输到系统。从工厂传输到BMS的JSON文件包含一种结构,其中没有工厂聚集数据就无法发送标记数据。在工厂中,通过重新扫描每个嵌套元素和包装代码中的标签来执行块/盒/托盘的汇总。这样可以确保代码可读性并保证正确的汇总,即包装中包含的代码与包装本身的代码是否一致。
因此,请尽量保留原始包装直到最后一刻。打开工厂包装盒后,将无法再保证所有块都属于该特定包装盒。您好,所有为此检查嵌套块并打开工厂包装盒的零售链;)
最近,香烟聚合功能出现在贸易组织的API中。我们在这里看到从物流仓库运送托盘的广阔前景。
一旦包装中包含的单元被用于处置或所有权变更文件中,就会自动进行分类。换句话说,如果您卖出一包香烟,则会将其所在的烟盒自动分解为几包,并将此烟盒所在的盒子分解为几盒等。将不可能使用进一步分类的块,箱,托盘代码。这是一个非常优雅的解决方案。今天,仅当嵌套单元在当前所有者的一侧处置时,才对盒/块进行分解。如果第三方交易对手试图从包装盒中出售您的香烟,这不会导致其自动分类,因为根据GIS MT的说法,交易对手在提交处置信息时扫描标签时不是所有者。
, , , ,
|
||
(14 ) (7 )
|
||
|
||
01 (14 ) 21(7
|
||
: 1+2+3
|
||
货盘,集装箱:
|
为提交信息而生成的UPD文件必须在其名称上带有标记符号-“ MARK”
PDF:用于注册UPD / UPDi / UKD的官方方法学建议;
EUPD示例:
XML。来自Megapolis的EPD示例。
XML。使用不同包装类型的EPD样品。
XML。发票说明样本。