Penandaan rokok. Struktur kode penandaan

Pada artikel kali ini saya akan mencoba memperjelas bagian teknis dan komposisi pelabelan rokok.

Maafkan saya pembaca Habr untuk ulasan singkatnya.



Apa itu rokok berlabel?



Rokok berlabel adalah rokok pada kemasan konsumen yang alat indentifikasinya diterapkan sesuai dengan persyaratan Undang-Undang No. 381-FZ dan peraturan perundang-undangan Pemerintah Federasi Rusia yang diadopsi sesuai dengan itu.

Dengan demikian, untuk pengakuan barang sebagai berlabel, syarat-syarat berikut harus dipenuhi:



  1. Barang harus ditandai dengan alat identifikasi (kode penandaan)
  2. Sistem pemantauan informasi harus memuat informasi tentang penerapan alat identifikasi pada rokok (hal ini dilakukan oleh produsen rokok)
  3. Sistem pemantauan informasi harus berisi informasi yang dapat diandalkan tentang barang


Kami ingatkan bahwa keberadaan informasi peredaran rokok dalam sistem pemantauan informasi bukanlah syarat untuk dapat dikenali produk seperti yang berlabel.

Bagi pembeli yang membeli rokok berlabel sebelum 07/01/2020 di atas kertas, tidak perlu khawatir dan menyerahkan sisa makanan ke suatu tempat. Rokok yang diedarkan oleh produsen sebelum 07/01/2020 terdaftar dalam sistem pemantauan sebagai "tidak dapat dilacak untuk sementara" dan sesuai dengan Peraturan, peredaran lebih lanjut diperbolehkan.



Harus diingat bahwa selama periode percobaan untuk produsen (2018-07.2019), komposisi pelabelan berubah. Produsen rokok telah bekerja sama dengan operator CRPT untuk menemukan solusi yang dapat diterima. Semua produk bertanda yang diproduksi selama periode transisi ini juga diberi tanda.



Mari kita lihat struktur kode tanda rokok yang berlaku saat ini.

Ngomong-ngomong, ini adalah salinan kode merek rokok di beberapa negara Eropa. Itulah sebabnya, bagi perusahaan transnasional, pelabelan menjadi keunggulan kompetitif dibandingkan pabrikan Rusia.



80 karakter digunakan untuk menyandikan nomor seri rokok dan MRP (harga eceran maksimum):

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
Algoritma pengkodean-decoding MRC didasarkan pada konversi ukuran MRC dalam kopecks ke sistem bilangan 80-ary menggunakan alfabet berikut: Alfabet untuk encoding



Encoding Prosedur pengkodean



  1. Kami mengubah MRC menjadi kopecks, misalnya
  2. Kami menemukan bagian bilangan bulat dan sisa membagi MRC dengan basis sistem bilangan (dalam kasus kami - 80)
  3. Kami mengambil karakter dari alfabet pada indeks yang sama dengan sisanya dan menuliskannya ke awal string yang dihasilkan
  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;
        }
    }
}
Karena dalam praktiknya MRC (harga eceran maksimum) dibulatkan menjadi rubel dan memiliki kisaran 60 hingga 500 rubel, kita dapat menyimpulkan: MRC dalam pengkodean 80-ary selalu dimulai dengan "A" dan diakhiri dengan salah satu dari empat karakter "A", " U "," o, "8". Anda dapat menggunakan ini untuk memeriksa validitas MRC dalam kode penandaan paket.



Tabel pengkodean MRC.


Mari kita pertimbangkan penandaan pada contoh Rokok dengan filter T&W ORIGINAL COMPACT MRC 106 "



Beginilah penandaan pada kemasan dan balok terlihat seperti:

Pelabelan rokok pada bungkus dan balokMaaf, saya tidak menemukan balok dengan MRC 106, saya mengambil foto 115. Penandaan kemasan



:

Bundel DataMatrix

04610030141527 00000Hd AB0o OnE1



String 29 karakter , mengandung:

  • GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .
  • (7 ) . ,   80 .     EAN.
  • (4 ). , 80- .
  • (4 ). « » . . , , .
GTIN-14 (14 ). «0» EAN-13 «» . EAN-13, .
« » GTIN EAN13.




Block marking:

Blok DataMatrixSalinan kode penandaan yang dapat dibaca manusia

(01) 04610030141534 (21) 00000! & <FNC1> (8005) 106000 <FNC1> (93) yikZ



Sebuah string minimal 41 karakter dan berisi kode dalam format GS1. Tanda kurung telah ditambahkan untuk kejelasan. Berisi simbol GS1 <FNC1>

  • (01) GTIN-14 (14 karakter numerik). Berisi kode awalan "0" dan EAN-13 untuk satuan ukuran "blok". Mirip dengan EAN-13 biasa yang dicetak di blok.
  • (21) Nomor seri (7 karakter). Kode identifikasi yang dibuat pabrikan dari kumpulan 80 karakter. Dibuat sebagai unik untuk GTIN-14 yang ditentukan.
  • (8005) (6 karakter digital). Harga eceran maksimum di kopecks untuk satu blok. Dalam contoh kami, 1060,00 rubel untuk satu blok (106 untuk satu pak)
  • (93) (4 ). « » . .
Data tambahan dapat dimasukkan ke dalam kode, tetapi kode 01 dan 21 harus dimasukkan terlebih dahulu.



Penandaan

Kotak menandai sebagai GS1-CODE128

kotak : (01) 14610030141524 (21) 0011986 <FNC1> (8005) 106000 <FNC1> (37) 50



String dengan minimal 25 karakter. Berisi kode wajib 01 dan 21 dalam format GS1. Setiap pabrikan sendiri yang menentukan komposisi kode penandaan untuk kemasan pengangkutan. Tidak memiliki ekor crypto. Dapat diterapkan sebagai kode GS-1 DataMatrix.

Pabrikan sering menduplikasi GS-1 (CODE-128) dan GS-1 DataMatrix, berikut ini contohnya:

Pabrikan lain terkadang tidak menunjukkan MRC, dan beberapa menambahkan elemen 240 untuk menunjukkan kode nomenklatur internal pabrikan.

Mari kita lihat contoh kode untuk menandai paket transport "box":
  • (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
  • (21) (7 ). , IFT-14 .
  • (8005) (6 ). , – «».
  • (37)  (2 ). .
Data tambahan dapat dimasukkan ke dalam kode, tetapi kode 01 dan 21 harus diutamakan



Penandaan

Penandaan palet

palet : (00) 94610030141 0004634



Sebuah string 20 karakter. Berisi awalan 00 dan kode logistik palet (wadah) wajib SSCC.



Semua paket, kecuali paket, mengandung kode yang dapat dibaca mesin dan padanannya yang dapat dibaca manusia. Ini memungkinkan Anda untuk memutar kode penandaan secara manual jika karena alasan tertentu kode tersebut tidak dipindai oleh pemindai.



Agregasi dan Disagregasi.

Sistem pelabelan mencakup fitur-fitur seperti agregasi dan disagregasi paket. Hingga saat ini, agregasi hanya dilakukan di pabrik. Dari pabrik, informasi dikirimkan ke sistem tidak hanya tentang kode penandaan yang diterapkan, tetapi juga tentang agregasi. File JSON yang ditransfer dari pabrik ke BMS berisi struktur yang tidak memungkinkan untuk mengirim data penandaan tanpa data agregasi pabrik. Di pabrik, agregasi blok / kotak / palet dilakukan dengan memindai ulang penandaan dari setiap elemen bersarang dan kode kemasan. Ini memastikan bahwa kode dapat dibaca dan menjamin agregasi yang benar , yaitu. kesesuaian kode yang disertakan di dalam paket dengan kode paket itu sendiri.

Karena itu, usahakan untuk menjaga kemasan aslinya hingga saat-saat terakhir. Setelah kotak pabrik dibuka, tidak mungkin lagi untuk menjamin bahwa semua blok adalah milik kotak khusus ini. Halo semua rantai ritel yang memeriksa blok bersarang dan kotak pabrik terbuka untuk ini;)



Baru-baru ini, fungsi agregasi rokok muncul di API untuk organisasi perdagangan. Kami melihat perspektif yang bagus di sini untuk pengiriman palet dari gudang logistik.



Disagregasi dilakukan secara otomatis segera setelah unit yang disertakan dalam paket telah digunakan dalam dokumen pembuangan atau perubahan kepemilikan. Dengan kata lain, jika Anda menjual sebungkus rokok, maka blok tempatnya secara otomatis dipilah menjadi beberapa paket, dan kotak tempat blok ini berada dipilah menjadi blok, dll. Tidak mungkin untuk menggunakan kode terpilah lebih lanjut dari blok, kotak, palet. Ini adalah solusi yang sangat elegan. Saat ini, kotak / blok dipisahkan hanya jika unit bersarang dibuang di sisi pemilik saat ini. Jika rekanan pihak ketiga mencoba menjual rokok Anda di luar kotak, hal ini tidak akan menyebabkan pemilahan otomatis, karena menurut GIS MT, rekanan bukanlah pemilik pada saat memindai label saat mengirimkan informasi tentang pembuangan.



, , , ,



(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

palet, wadah:

kode kemasan pengiriman serial, SSCC (20 karakter) (standar GS1-128 , ditunjukkan dengan ID aplikasi AI (00))

contoh: 00177102981700000049

Harap diperhatikan: Dalam contoh ini, simbol "FNC1" (kode 29) tidak digunakan di mana pun. Itu dipotong saat diganti ke FRT.



File UPD yang dihasilkan untuk penyampaian informasi harus memiliki tanda tanda di namanya - "MARK"



PDF: Rekomendasi metodologi resmi untuk pendaftaran UPD / UPDi / UKD.



Contoh EUPD:



XML. Contoh EPD dari Megapolis.



XML. Contoh EPDM dengan berbagai jenis kemasan.



XML. Contoh pemberitahuan klarifikasi faktur.






All Articles