Marquage de cigarettes. La structure du code de marquage

Dans cet article, je vais essayer de clarifier la partie technique et la composition de l'Ă©tiquetage des cigarettes.

Pardonnez-moi aux lecteurs de Habr pour la critique abrégée.



Que sont les cigarettes étiquetées?



Les cigarettes étiquetées sont les cigarettes figurant sur l'emballage du consommateur dont les moyens d'identification sont appliqués conformément aux exigences de la loi n ° 381-FZ et aux actes juridiques réglementaires du gouvernement de la Fédération de Russie adoptés conformément à celle-ci.

Ainsi, pour la reconnaissance des marchandises comme étiquetées, les conditions suivantes doivent être remplies:



  1. Les marchandises doivent être marquées avec des moyens d'identification (code de marquage)
  2. Le système de surveillance des informations doit contenir des informations sur l'application des moyens d'identification sur les cigarettes (ceci est fait par le fabricant de cigarettes)
  3. Le système de surveillance des informations doit contenir des informations fiables sur les marchandises


Nous vous rappelons que la présence d'informations sur la circulation des cigarettes dans le système de surveillance de l'information n'est pas une condition pour la reconnaissance des produits comme étiquetés.

Pour les acheteurs qui ont acheté des cigarettes étiquetées sur papier avant le 07/01/2020, il n'y a pas lieu de s'inquiéter et de soumettre les restes quelque part. Les cigarettes mises en circulation par le fabricant avant le 07/01/2020 sont enregistrées dans le système de surveillance comme «temporairement introuvables» et conformément aux règles, leur circulation ultérieure est autorisée.



Il faut se rappeler que pendant la période d'expérimentation pour les fabricants (2018-07.2019), la composition de l'étiquetage a changé. Les fabricants de cigarettes ont travaillé avec l'opérateur CRPT pour trouver des solutions acceptables. Tous les produits marqués fabriqués pendant cette période de transition étaient également marqués.



Jetons un coup d'Ĺ“il Ă  la structure du code de marquage des cigarettes en vigueur aujourd'hui.

Soit dit en passant, il s'agit d'une copie du code de marquage des cigarettes dans certains pays européens. C'est pourquoi, pour les entreprises transnationales, l'étiquetage est devenu un avantage concurrentiel par rapport aux fabricants russes.



80 caractères sont utilisés pour encoder le numéro de série des cigarettes et le MRP (prix de vente maximum):

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
L'algorithme de codage-décodage du MRC est basé sur la conversion de la taille du MRC en kopecks au système numérique 80-aire en utilisant l'alphabet suivant: Alphabet pour l'encodage



Codage Procédure de codage



  1. Nous convertissons le MRC en kopecks, par exemple
  2. On retrouve la partie entière et le reste de la division du MRC par la base du système numérique (dans notre cas - 80)
  3. Nous prenons un caractère de l'alphabet à un index égal au reste et l'écrivons au début de la chaîne résultante
  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;
        }
    }
}
Puisque dans la pratique le MRC (prix de détail maximum) est arrondi au roubles et a une gamme de 60 à 500 roubles, nous pouvons conclure: MRC en encodage 80-aire commence toujours par "A" et se termine par l'un des quatre caractères "A", " U "," o, "8". Vous pouvez l'utiliser pour vérifier la validité du MRC dans le code de marquage de l'emballage.



Table de codage MRC.


Considérons le marquage sur l'exemple des Cigarettes avec le filtre "T&W" ORIGINAL COMPACT MRC 106 "



Voici Ă  quoi ressemble le marquage sur les packs et les blocs:

Étiquetage des cigarettes sur les paquets et les blocsDésolé, je n'ai pas trouvé de bloc avec MRC 106, j'ai pris 115 pour la photo.



Marquage du

Offres groupées DataMatrix

pack : 04610030141527 00000Hd AB0o OnE1



Chaîne de 29 caractères , contient:

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




Marquage de bloc:

Bloc DataMatrixCopie lisible par l'homme du code de marquage

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



Une chaîne d'au moins 41 caractères et contient un code au format GS1. Supports ajoutés pour plus de clarté. Contient les symboles GS1 <FNC1>

  • (01) GTIN-14 (14 caractères numĂ©riques). Contient le premier "0" et le code EAN-13 pour l'unitĂ© de mesure "bloc". Similaire Ă  l'EAN-13 habituel imprimĂ© sur le bloc.
  • (21) NumĂ©ro de sĂ©rie (7 caractères). Code d'identification gĂ©nĂ©rĂ© par le fabricant Ă  partir d'un ensemble de 80 caractères. Conçu comme unique pour le GTIN-14 spĂ©cifiĂ©.
  • (8005) (6 caractères numĂ©riques). Prix ​​de vente maximum en kopecks pour un bloc. Dans notre exemple, 1060,00 roubles pour un bloc (106 pour un pack)
  • (93) (4 ). « » . .
Des données supplémentaires peuvent être incluses dans le code, mais les codes 01 et 21 doivent être placés en premier.



Marquage des

Marquage de boîte comme GS1-CODE128

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



Une chaîne d'au moins 25 caractères. Contient les codes obligatoires 01 et 21 au format GS1. Chaque fabricant détermine lui-même la composition du code de marquage des emballages de transport. N'a pas de queue crypto. Peut être appliqué en tant que code GS-1 DataMatrix.

Souvent, les fabricants dupliquent GS-1 (CODE-128) et GS-1 DataMatrix, voici un exemple:

D'autres fabricants n'indiquent parfois pas le MRC, et certains ajoutent l'élément 240 pour indiquer le code de nomenclature interne du fabricant.

Jetons un Ĺ“il Ă  un exemple de code pour marquer un colis de transport "box":
  • (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
  • (21) (7 ). , IFT-14 .
  • (8005) (6 ). , – «».
  • (37)  (2 ). .
Des données supplémentaires peuvent être incluses dans le code, mais les codes 01 et 21.



Marquage de

Marquage de palette

palette : (00) 94610030141 0004634



Une chaîne de 20 caractères. Contient le préfixe 00 et le code logistique obligatoire de la palette (conteneur) SSCC.



Tous les packages, à l'exception des packs, portent à la fois un code lisible par machine et son équivalent lisible par l'homme. Cela vous permet de composer manuellement le code de marquage si, pour une raison quelconque, le code n'est pas scanné par le scanner.



Agrégation et désagrégation.

Le système d'étiquetage intègre des fonctionnalités telles que l'agrégation et la désagrégation des emballages. Jusqu'à récemment, l'agrégation était réalisée uniquement en usine. Depuis l'usine, des informations sont transmises au système non seulement sur les codes de marquage appliqués, mais également sur leur agrégation. Le fichier JSON transféré de l'usine vers le BMS contient une structure dans laquelle il est impossible d'envoyer les données de marquage sans les données d'agrégation d'usine. En usine, l'agrégation des blocs / boîtes / palettes est effectuée en scannant à nouveau l'étiquetage de chaque élément imbriqué et les codes d'emballage. Cela garantit que le code est lisible et garantit une agrégation correcte , c'est-à-dire conformité des codes inclus dans le colis avec le code du colis lui-même

Par conséquent, essayez de conserver l'emballage d'origine jusqu'au dernier moment. Après avoir ouvert la boîte d'usine, il n'est plus possible de garantir que tous les blocs appartiennent à cette boîte particulière. Bonjour à toutes les chaînes de vente au détail qui vérifient les blocs imbriqués et ouvrent des boîtes d'usine pour cela;)



Récemment, la fonction d'agrégation de cigarettes est apparue dans l'API pour les organisations professionnelles. Nous voyons ici une belle perspective pour l'expédition de palettes depuis les entrepôts logistiques.



La désagrégation est effectuée automatiquement dès que l'unité incluse dans le colis a été utilisée dans les documents de cession ou de changement de propriété. En d'autres termes, si vous vendez un paquet de cigarettes, le bloc dans lequel il se trouvait est automatiquement désagrégé en paquets, et la boîte dans laquelle se trouvait ce bloc est désagrégée en blocs, etc. Il sera impossible d'utiliser d'autres codes désagrégés du bloc, de la boîte, de la palette. C'est une solution très élégante. Aujourd'hui, la boîte / le bloc n'est désagrégé que si la disposition de l'unité imbriquée s'est produite du côté du propriétaire actuel. Si une contrepartie tierce tente de vendre vos cigarettes depuis votre box, cela n'entraînera pas sa désagrégation automatique, puisque selon GIS MT, la contrepartie n'était pas propriétaire au moment de la numérisation de l'étiquette lors de la soumission des informations sur l'élimination.



, , , ,



(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

palettes, conteneurs:

code d'emballage d'expédition en série, SSCC (20 caractères) (standard GS1-128 , indiqué avec l'ID d'application AI (00))

exemple: 00177102981700000049

Attention: dans l'exemple, le symbole "FNC1" (code 29) n'est utilisé nulle part. Il est coupé lorsqu'il est remplacé dans le FRT.



Le fichier UPD généré pour la soumission des informations doit avoir un signe de marquage dans son nom - "MARK"



PDF: Recommandations méthodologiques officielles pour l'enregistrement des UPD / UPDi /



UKD Échantillons EUPD:



XML. Exemple d'EPD de Megapolis.



XML. Un échantillon d'EPDM avec différents types d'emballage.



XML. Exemple d'avis de clarification de facture.






All Articles