Marcado de cigarrillos. La estructura del código de marcado.

En este artículo intentaré aclarar la parte técnica y la composición del etiquetado de los cigarrillos.

Perdóname lectores de Habr por la reseña abreviada.



¿Qué son los cigarrillos etiquetados?



Los cigarrillos etiquetados son aquellos cigarrillos en el empaque del consumidor cuyos medios de identificación se aplican de acuerdo con los requisitos de la Ley No. 381-FZ y los actos legales reglamentarios del Gobierno de la Federación de Rusia adoptados de conformidad con ella.

Por tanto, para el reconocimiento de mercancías como etiquetadas, se deben cumplir las siguientes condiciones:



  1. Las mercancías deben estar marcadas con medios de identificación (código de marcado)
  2. El sistema de monitoreo de información debe contener información sobre la aplicación de medios de identificación en los cigarrillos (esto lo hace el fabricante de cigarrillos)
  3. El sistema de seguimiento de la información debe contener información fiable sobre las mercancías.


Le recordamos que la presencia de información sobre la circulación de cigarrillos en el sistema de monitoreo de información no es una condición para el reconocimiento de productos como etiquetados.

Para aquellos compradores que compraron cigarrillos etiquetados en papel antes del 01/07/2020, no hay necesidad de preocuparse y enviar las sobras a algún lugar. Los cigarrillos puestos en circulación por el fabricante antes del 01/07/2020 se registran en el sistema de control como “temporalmente imposibles de rastrear” y, de acuerdo con las Reglas, se permite su posterior circulación.



Debe recordarse que durante el período de experimento para los fabricantes (2018-07.2019), la composición del etiquetado cambió. Los fabricantes de cigarrillos han trabajado con el operador de CRPT para encontrar soluciones aceptables. También se marcaron todos los productos marcados fabricados durante este período de transición.



Echemos un vistazo a la estructura del código de marcado de cigarrillos vigente en la actualidad.

Por cierto, es una copia del código de marcado de cigarrillos en algunos países europeos. Por eso, para las empresas transnacionales, el etiquetado se ha convertido en una ventaja competitiva frente a los fabricantes rusos.



Se utilizan 80 caracteres para codificar el número de serie de los cigarrillos y MRP (precio minorista máximo):

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
El algoritmo de codificación-decodificación del MRC se basa en la conversión del tamaño del MRC en kopeks en un sistema numérico de 80 arios utilizando el siguiente alfabeto: Alfabeto para codificar



Codificación Procedimiento de codificación



  1. Convertimos el MRC a kopeks, por ejemplo
  2. Encontramos la parte entera y el resto de dividir el MRC por la base del sistema numérico (en nuestro caso, 80)
  3. Tomamos un carácter del alfabeto en un índice igual al resto y lo escribimos al comienzo de la cadena resultante
  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;
        }
    }
}
Dado que en la práctica el MRC (precio máximo de venta al público) se redondea a rublos y tiene un rango de 60 a 500 rublos, podemos concluir: MRC en codificación 80-ary siempre comienza con "A" y termina con uno de los cuatro caracteres "A", " U "," o, "8". Puede usar esto para verificar la validez del MRC en el código de marcado del paquete.



Tabla de codificación MRC.


Consideremos la marca en el ejemplo de Cigarrillos con el filtro "T&W" ORIGINAL COMPACT MRC 106 "



Así es como se ve la marca en paquetes y bloques:

Etiquetado de cigarrillos en paquetes y bloques.Lo siento, no encontré un bloque con MRC 106, tomé 115 para la foto. Marca del paquete



:

Paquetes de DataMatrix

04610030141527 00000Hd AB0o OnE1



Cadena de 29 caracteres de largo , contiene:

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






Bloque DataMatrixCopia legible por humanos del código de marcado

Marca de bloque: (01) 04610030141534 (21) 00000! & <FNC1> (8005) 106000 <FNC1> (93) yikZ



Una cadena de al menos 41 caracteres y contiene un código en formato GS1. Se han agregado corchetes para mayor claridad. Contiene símbolos GS1 <FNC1>

  • (01) GTIN-14 (14 caracteres numéricos). Contiene el "0" inicial y el código EAN-13 para la unidad de medida "bloque". Similar al EAN-13 habitual impreso en el bloque.
  • (21) Número de serie (7 caracteres). Código de identificación generado por el fabricante a partir de un conjunto de 80 caracteres. Concebido como único para el GTIN-14 especificado.
  • (8005) (6 caracteres digitales). Precio de venta máximo en kopeks por bloque. En nuestro ejemplo, 1060,00 rublos por bloque (106 por paquete)
  • (93) (4 ). « » . .
Es posible que se incluyan datos adicionales en el código, pero primero deben ir los códigos 01 y 21. Marcas de casillas



:

Marcado de caja como GS1-CODE128

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



Una cadena de al menos 25 caracteres. Contiene códigos obligatorios 01 y 21 en formato GS1. Cada fabricante determina él mismo la composición del código de marcado para el embalaje de transporte. No tiene cola criptográfica. Puede aplicarse como código GS-1 DataMatrix.

A menudo, los fabricantes duplican GS-1 (CODE-128) y GS-1 DataMatrix, aquí hay un ejemplo:

otros fabricantes a veces no indican el MRC y algunos agregan el elemento 240 para indicar el código de nomenclatura interna del fabricante.

Echemos un vistazo a un ejemplo de un código para marcar un paquete de transporte como "caja":
  • (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
  • (21) (7 ). , IFT-14 .
  • (8005) (6 ). , – «».
  • (37)  (2 ). .
Se pueden incluir datos adicionales en el código, pero primero deben ir los códigos 01 y 21.



Marcado de

Marcado de paletas

paleta : (00) 94610030141 0004634



Una cadena de 20 caracteres. Contiene el prefijo 00 y el código logístico obligatorio de pallet (contenedor) SSCC.



Todos los paquetes, excepto los paquetes, contienen tanto un código legible por máquina como su equivalente legible por humanos. Esto le permite marcar manualmente el código de marcado si por alguna razón el escáner no escanea el código.



Agregación y desagregación.

El sistema de etiquetado incorpora características como agregación y desagregación de paquetes, hasta hace poco la agregación se realizaba solo en fábrica. Desde la fábrica, la información se transmite al sistema no solo sobre los códigos de marcado aplicados, sino también sobre su agregación. El archivo JSON transferido de fábrica al BMS contiene una estructura en la que es imposible enviar los datos de marcado sin los datos de agregación de fábrica. En la fábrica, la agregación de bloques / cajas / paletas se realiza volviendo a escanear el marcado de cada elemento anidado y códigos de empaque. Esto asegura que el código sea legible y garantiza una agregación correcta , es decir conformidad de los códigos incluidos en el paquete con el código del propio paquete.

Por tanto, trate de conservar el embalaje original hasta el último momento. Habiendo abierto la caja de fábrica, ya no es posible garantizar que todos los bloques pertenezcan a esta caja en particular. Hola a todas las cadenas minoristas que verifican bloques anidados y abren cajas de fábrica para esto;)



Recientemente, la función de agregación de cigarrillos apareció en la API para organizaciones comerciales. Vemos una gran perspectiva aquí para el envío de paletas desde los almacenes logísticos.



La desagregación se realiza automáticamente tan pronto como la unidad incluida en el paquete se haya utilizado en los documentos de disposición o cambio de propiedad. En otras palabras, si vende un paquete de cigarrillos, entonces el bloque en el que estaba ubicado se desagrega automáticamente en paquetes, y la caja en la que se encuentra este bloque se desagrega en bloques, etc. Será imposible utilizar más códigos desagregados del bloque, caja, paleta. Esta es una solución muy elegante. En la actualidad, la caja / bloque se desagrega solo si la unidad anidada se eliminó del lado del propietario actual. Si una contraparte de terceros intenta vender sus cigarrillos fuera de su caja, esto no dará lugar a su desagregación automática, ya que según GIS MT, la contraparte no era la propietaria en el momento de escanear la etiqueta al enviar la información sobre eliminación.



, , , ,



(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

paletas, contenedores:

código de embalaje de envío en serie, SSCC (20 caracteres) (estándar GS1-128 , indicado con ID de aplicación AI (00))

ejemplo: 00177102981700000049

Tenga en cuenta: En el ejemplo, el símbolo "FNC1" (código 29) no se utiliza en ninguna parte. Se corta cuando se sustituye en el FRT.



El archivo UPD generado para el envío de información debe tener un rótulo en su nombre - "MARK"



PDF: Recomendaciones metodológicas oficiales para el registro de la UPD / UPDi /



UKD Muestras EUPD:



XML. Ejemplo de EPD de Megapolis.



XML. Muestra de EPD con diferentes tipos de envases.



XML. Ejemplo de aviso de aclaración de la factura.






All Articles