タバコのマーキング。マーキングコードの構造

この記事では、タバコのラベリングの技術的な部分と構成を明らかにしようと思います。

短縮されたレビューのためにHabrの読者を許してください。



タバコとは何ですか?



ラベル付きタバコとは、消費者向けパッケージに記載されたタバコであり、法律第381-FZの要件と、それに応じて採択されたロシア連邦政府の規制法に準拠して識別手段が適用されます。

したがって、ラベル付きの商品を認識するためには、次の条件を満たす必要があります。



  1. 商品には識別手段(マーキングコード)を付ける必要があります
  2. 情報監視システムには、タバコの識別手段の適用に関する情報が含まれている必要があります(これはタバコメーカーによって行われます)
  3. 情報監視システムには、商品に関する信頼できる情報が含まれている必要があります


情報監視システムでのタバコの流通に関する情報の存在は、ラベル付きの製品の認識の条件ではないことをお知らせします。

2020年7月1日より前にラベル付きのタバコを紙で購入したバイヤーの場合、残り物を心配してどこかに提出する必要はありません。 2020年7月1日より前に製造業者によって流通させられたタバコは、「一時的に追跡不能」として監視システムに登録され、規則に従って、それ以上の流通が許可されます。



メーカーの実験期間中(2018-07.2019)に、ラベルの構成が変更されたことを覚えておく必要があります。タバコメーカーは、CRPTオペレーターと協力して、許容できる解決策を見つけました。この移行期間中に製造されたすべてのマーク付き製品にもマークが付けられました。



今日施行されているタバコのマーキングコードの構造を見てみましょう。

ちなみに、これはヨーロッパのいくつかの国のタバコのマーキングコードのコピーです。そのため、多国籍企業にとって、ラベリングはロシアのメーカーよりも競争上の優位性になっています。



タバコのシリアル番号とMRP(最大小売価格)のエンコードには80文字が使用されます。

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
MRCのコーディング/デコードアルゴリズムは、次のアルファベットを使用して、コペック内のMRCのサイズを80-ary番号システムに変換することに基づいています。エンコード用のアルファベット



エンコーディングエンコーディング

手順

  1. たとえば、MRCをコペックに変換します
  2. MRCを数値システムのベース(この場合は-80)で割った部分と残りの部分を見つけます。
  3. 残りの部分と等しいインデックスでアルファベットから文字を取得し、結果の文字列の先頭に書き込みます
  4. 2 3 0
  5. 4 0 (“A”)
= 146 30, = 14630


  1. 14630 80: 182 70
  2. 70 : “.”
  3. 0, 182 80: 2 22
  4. 22 : “W.”
  5. 0, 2 80: 0 2
  6. 2 : “CW.”
  7. 0, : “ACW.”










  1. , 80, , , 0,
“ACW.”


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


mrp encoder on ++
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;
        }
    }
}
実際には、MRC(最大小売価格)はルーブルに丸められ、60〜500ルーブルの範囲であるため、次のように結論付けることができます。80-aryエンコーディングのMRCは常に「A」で始まり、4文字の「A」のいずれかで終わります。 U "、" o、 "8"。これを使用して、パッケージマーキングコードでMRCの有効性を確認できます。



MRCコーディングテーブル。


「T&W」フィルターを使用したタバコの例のマーキングを考えてみましょう。ORIGINALCOMPACTMRC 106「



パックとブロックのマーキングは次のようになります。

パックとブロックのタバコのラベル付け申し訳ありませんが、MRC 106のブロックは見つかりませんでした。写真には、115を使用しました。パックの



マーキング:

DataMatrixバンドル

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.




ブロックマーキング:

DataMatrixブロックマーキングコードの人間が読めるコピー

(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と21を最初に配置する必要があります。ボックスの



マーキング:

GS1-CODE128としてのボックスマーキング

(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 ). .
コードに追加のデータが含まれる場合がありますが、コード01と21を最初に配置する必要があります。パレットの



マーキング:

パレットマーキング

(00)94610030141 000463420



文字の文字列。プレフィックス00と必須のパレット(コンテナ)ロジスティックコードSSCCが含まれています。



パックを除くすべてのパッケージには、機械で読み取り可能なコードとそれに相当する人間で読み取れるコードの両方が含まれています。これにより、何らかの理由でコードがスキャナーによってスキャンされない場合に、マーキングコードを手動でダイヤルできます。



集約と分解。

ラベリングシステムには、パッケージの集約や分解などの機能が組み込まれています。最近まで、集約は工場でのみ行われていました。工場から、適用されたマーキングコードだけでなく、その集約に関する情報もシステムに送信されます。工場からBMSに転送されたJSONファイルには、工場集計データなしではマーキングデータを送信できない構造が含まれています。工場では、ブロック/ボックス/パレットの集約は、ネストされた各要素のマーキングとパッケージングコードを再スキャンすることによって実行されます。これにより、コードが読み取り可能になり、正しい集計が保証されます。パッケージに含まれるコードとパッケージ自体のコードの準拠。

したがって、最後の瞬間まで元のパッケージを保持するようにしてください。ファクトリーボックスを開くと、すべてのブロックがこの特定のボックスに属することを保証できなくなります。ネストされたブロックをチェックし、これについてファクトリーボックスを開くすべての小売チェーンにこんにちは;)



最近、タバコ集約機能が貿易組織のAPIに登場しました。ロジスティクス倉庫からのパレットの出荷については、ここで素晴らしい展望が見られます。



パッケージに同梱されているユニットが廃棄または所有権の変更の文書で使用されるとすぐに、分解が自動的に実行されます。つまり、タバコのパックを販売する場合、それが配置されていたブロックは自動的にパックに分解され、このブロックが配置されていたボックスはブロックに分解されます。ブロック、ボックス、パレットのさらに細分化されたコードを使用することは不可能になります。これは非常にエレガントなソリューションです。現在、ボックス/ブロックは、ネストされたユニットの廃棄が現在の所有者の側で行われた場合にのみ分解されます。 GIS MTによると、処分に関する情報を提出する際にラベルをスキャンした時点では相手方が所有者ではなかったため、サードパーティの相手方が箱から出してタバコを販売しようとしても、自動分解にはなりません。



, , , ,



(14 ) (7 ) (4 )



: 00000046198532%J_zMZ401er

(14 ) (7 )



: 00000046214805ltCeK2L



01 (14 ) 21 (7 ) 8005 (6 )



: (01)04600266012586(21)E'd8ZnM(8005)100000

: 010460026601258621E'd8ZnM8005100000

01 (14 ) 21(7



: (01)04600266012586(21)E'd8ZnM

: 010460026601258621E'd8ZnM

: 1+2+3

• 1

01 (14 )

02 , (14 )

• 2

11 (6 )

13 (6 )

• 3

21 ( 20 )

:

02046002660125991302071921E'd8ZnMZx



01046002660125861101071921E'd8ZnM

パレット、コンテナ:

シリアル出荷パッケージコード、SSCC(20文字)(​​標準GS1-128、アプリケーションID AI(00)で示される)

例:00177102981700000049

注意:この例では、記号「FNC1」(コード29)はどこにも使用されていません。FRTに差し替えると切り抜かれます。



情報を送信するために生成されたUPDファイルには、名前にマーキング記号が含まれている必要があります-「MARK」



PDF:UPD / UPDi / UKDの登録に関する公式の方法論的推奨事項



。EUPDサンプル:



XML。メガポリスからのサンプルEPD。



XML。さまざまなタイプのパッケージを使用したサンプルEPDM。



XML。請求書の説明のサンプル通知。






All Articles