この記事では、タバコのラベリングの技術的な部分と構成を明らかにしようと思います。
短縮されたレビューのためにHabrの読者を許してください。
タバコとは何ですか?
ラベル付きタバコとは、消費者向けパッケージに記載されたタバコであり、法律第381-FZの要件と、それに応じて採択されたロシア連邦政府の規制法に準拠して識別手段が適用されます。
したがって、ラベル付きの商品を認識するためには、次の条件を満たす必要があります。
- 商品には識別手段(マーキングコード)を付ける必要があります
- 情報監視システムには、タバコの識別手段の適用に関する情報が含まれている必要があります(これはタバコメーカーによって行われます)
- 情報監視システムには、商品に関する信頼できる情報が含まれている必要があります
情報監視システムでのタバコの流通に関する情報の存在は、ラベル付きの製品の認識の条件ではないことをお知らせします。
2020年7月1日より前にラベル付きのタバコを紙で購入したバイヤーの場合、残り物を心配してどこかに提出する必要はありません。 2020年7月1日より前に製造業者によって流通させられたタバコは、「一時的に追跡不能」として監視システムに登録され、規則に従って、それ以上の流通が許可されます。
メーカーの実験期間中(2018-07.2019)に、ラベルの構成が変更されたことを覚えておく必要があります。タバコメーカーは、CRPTオペレーターと協力して、許容できる解決策を見つけました。この移行期間中に製造されたすべてのマーク付き製品にもマークが付けられました。
今日施行されているタバコのマーキングコードの構造を見てみましょう。
ちなみに、これはヨーロッパのいくつかの国のタバコのマーキングコードのコピーです。そのため、多国籍企業にとって、ラベリングはロシアのメーカーよりも競争上の優位性になっています。
タバコのシリアル番号とMRP(最大小売価格)のエンコードには80文字が使用されます。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
MRCのコーディング/デコードアルゴリズムは、次のアルファベットを使用して、コペック内のMRCのサイズを80-ary番号システムに変換することに基づいています。
エンコーディングエンコーディング
手順
- たとえば、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」フィルターを使用したタバコの例のマーキングを考えてみましょう。ORIGINALCOMPACTMRC 106「
パックとブロックのマーキングは次のようになります。
申し訳ありませんが、MRC 106のブロックは見つかりませんでした。写真には、115を使用しました。パックの
マーキング:
04610030141527 00000Hd AB0o OnE129
文字の文字列、含まれています:
- 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-1DataMatrixコードとして適用できます。
メーカーはGS-1(CODE-128)とGS-1 DataMatrixを複製することがよく
あります。例を次に示します。他のメーカーはMRCを示さない場合があり、一部のメーカーはメーカーの内部命名コードを示すために要素240を追加します。
トランスポートパッケージの「ボックス」をマークするためのコードの例を見てみましょう。
- (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
- (21) (7 ). , IFT-14 .
- (8005) (6 ). , – «».
- (37) (2 ). .
マーキング:
(00)94610030141 000463420
文字の文字列。プレフィックス00と必須のパレット(コンテナ)ロジスティックコードSSCCが含まれています。
パックを除くすべてのパッケージには、機械で読み取り可能なコードとそれに相当する人間で読み取れるコードの両方が含まれています。これにより、何らかの理由でコードがスキャナーによってスキャンされない場合に、マーキングコードを手動でダイヤルできます。
集約と分解。
ラベリングシステムには、パッケージの集約や分解などの機能が組み込まれています。最近まで、集約は工場でのみ行われていました。工場から、適用されたマーキングコードだけでなく、その集約に関する情報もシステムに送信されます。工場からBMSに転送されたJSONファイルには、工場集計データなしではマーキングデータを送信できない構造が含まれています。工場では、ブロック/ボックス/パレットの集約は、ネストされた各要素のマーキングとパッケージングコードを再スキャンすることによって実行されます。これにより、コードが読み取り可能になり、正しい集計が保証されます。パッケージに含まれるコードとパッケージ自体のコードの準拠。
したがって、最後の瞬間まで元のパッケージを保持するようにしてください。ファクトリーボックスを開くと、すべてのブロックがこの特定のボックスに属することを保証できなくなります。ネストされたブロックをチェックし、これについてファクトリーボックスを開くすべての小売チェーンにこんにちは;)
最近、タバコ集約機能が貿易組織のAPIに登場しました。ロジスティクス倉庫からのパレットの出荷については、ここで素晴らしい展望が見られます。
パッケージに同梱されているユニットが廃棄または所有権の変更の文書で使用されるとすぐに、分解が自動的に実行されます。つまり、タバコのパックを販売する場合、それが配置されていたブロックは自動的にパックに分解され、このブロックが配置されていたボックスはブロックに分解されます。ブロック、ボックス、パレットのさらに細分化されたコードを使用することは不可能になります。これは非常にエレガントなソリューションです。現在、ボックス/ブロックは、ネストされたユニットの廃棄が現在の所有者の側で行われた場合にのみ分解されます。 GIS MTによると、処分に関する情報を提出する際にラベルをスキャンした時点では相手方が所有者ではなかったため、サードパーティの相手方が箱から出してタバコを販売しようとしても、自動分解にはなりません。
, , , ,
|
||
(14 ) (7 )
|
||
|
||
01 (14 ) 21(7
|
||
: 1+2+3
|
||
パレット、コンテナ:
|
情報を送信するために生成されたUPDファイルには、名前にマーキング記号が含まれている必要があります-「MARK」
PDF:UPD / UPDi / UKDの登録に関する公式の方法論的推奨事項
。EUPDサンプル:
XML。メガポリスからのサンプルEPD。
XML。さまざまなタイプのパッケージを使用したサンプルEPDM。
XML。請求書の説明のサンプル通知。