Marcação de cigarro. A estrutura do código de marcação

Neste artigo tentarei esclarecer a parte técnica e a composição da rotulagem de cigarros.

Perdoe-me, leitores do Habr, pela crítica abreviada.



O que são cigarros rotulados?



Os cigarros etiquetados são aqueles cigarros em cuja embalagem de consumo são aplicados meios de identificação em conformidade com os requisitos da Lei n.º 381-FZ e os atos jurídicos regulamentares do Governo da Federação Russa adotados de acordo com ela.

Assim, para o reconhecimento de mercadorias como etiquetadas, as seguintes condições devem ser atendidas:



  1. As mercadorias devem ser marcadas com meios de identificação (código de marcação)
  2. O sistema de monitoramento de informações deve conter informações sobre a aplicação de meios de identificação nos cigarros (isso é feito pelo fabricante do cigarro)
  3. O sistema de monitoramento de informações deve conter informações confiáveis ​​sobre as mercadorias


Lembramos que a presença de informações sobre a circulação de cigarros no sistema de monitoramento de informações não é condição para o reconhecimento dos produtos rotulados.

Para os compradores que compraram cigarros etiquetados em papel antes de 01/07/2020, não há necessidade de se preocupar e enviar as sobras em algum lugar. Os cigarros colocados em circulação pelo fabricante antes de 01/07/2020 são registrados no sistema de monitoramento como "temporariamente indetectáveis" e, de acordo com as Normas, sua nova circulação é permitida.



Deve-se lembrar que durante o período de experimento para fabricantes (2018-07.2019), a composição da rotulagem mudou. Os fabricantes de cigarros trabalharam com o operador CRPT para encontrar soluções aceitáveis. Todos os produtos marcados fabricados durante este período de transição também foram marcados.



Vamos dar uma olhada na estrutura do código de marcação de cigarros em vigor hoje.

A propósito, é uma cópia do código de marcação de cigarro em alguns países europeus. É por isso que, para as empresas transnacionais, a rotulagem se tornou uma vantagem competitiva sobre os fabricantes russos.



80 caracteres são usados ​​para codificar o número de série dos cigarros e MRP (preço máximo de varejo):

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”%&’*+-./_,:;=<>?
O algoritmo de codificação-decodificação do MRC é baseado na conversão do tamanho do MRC em copeques em um sistema numérico de 80 anos usando o seguinte alfabeto: Alfabeto para codificação



Codificação Procedimento de codificação



  1. Nós convertemos o MRC em copeques, por exemplo
  2. Encontramos a parte inteira e o restante da divisão do MRC pela base do sistema numérico (em nosso caso - 80)
  3. Pegamos um caractere do alfabeto em um índice igual ao resto e o escrevemos no início da string 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;
        }
    }
}
Como na prática MRC (preço máximo de varejo) é arredondado para rublos e tem uma faixa de 60 a 500 rublos, podemos concluir: MRC na codificação 80-ária sempre começa com “A” e termina com um dos quatro caracteres “A”, “ U "," o, "8". Você pode usar isso para verificar a validade do MRC no código de marcação do pacote.



Tabela de codificação MRC.


Vamos considerar a marcação no exemplo de Cigarros com o filtro "T&W" ORIGINAL COMPACT MRC 106 "Assim



são as marcações em maços e blocos:

Rotulagem de cigarros em maços e blocosDesculpe, não encontrei um bloco com MRC 106, tirei 115 para a foto.



Marcação de

Pacotes DataMatrix

maço : 04610030141527 00000Hd AB0o OnE1



Uma string de 29 caracteres , contém:

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




Marcação de bloco:

Bloco DataMatrixCópia legível do código de marcação

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



Uma sequência de pelo menos 41 caracteres e contém um código no formato GS1. Os colchetes foram adicionados para maior clareza. Contém símbolos GS1 <FNC1>

  • (01) GTIN-14 (14 caracteres numéricos). Contém o "0" inicial e o código EAN-13 para a unidade de medida "bloco". Semelhante ao usual EAN-13 impresso no bloco.
  • (21) Número de série (7 caracteres). Código de identificação gerado pelo fabricante a partir de um conjunto de 80 caracteres. Concebido como exclusivo para o GTIN-14 especificado.
  • (8005) (6 caracteres digitais). Preço máximo de varejo em copeques por um bloco. Em nosso exemplo, 1.060,00 rublos por bloco (106 por pacote)
  • (93) (4 ). « » . .
Dados adicionais podem ser incluídos no código, mas os códigos 01 e 21 devem ir primeiro.



Marcação das

Marcação da caixa como GS1-CODE128

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



Uma sequência de pelo menos 25 caracteres. Contém os códigos obrigatórios 01 e 21 no formato GS1. Cada fabricante determina ele mesmo a composição do código de marcação para embalagens de transporte. Não possui cauda criptográfica. Pode ser aplicado como código GS-1 DataMatrix.

Freqüentemente, os fabricantes duplicam GS-1 (CODE-128) e GS-1 DataMatrix, aqui está um exemplo:

Outros fabricantes às vezes não indicam o MRC e alguns adicionam o elemento 240 para indicar o código de nomenclatura interna do fabricante.

Vamos dar uma olhada em um exemplo de um código para marcar uma "caixa" de pacote de transporte:
  • (01) GTIN-14 (14 ). IFT-14 «». IFT-14, .
  • (21) (7 ). , IFT-14 .
  • (8005) (6 ). , – «».
  • (37)  (2 ). .
Dados adicionais podem ser incluídos no código, mas os códigos 01 e 21.



Marcação de

Marcação de paletes

palete : (00) 94610030141 0004634



Uma seqüência de 20 caracteres. Contém o prefixo 00 e o código logístico SSCC de palete (contentor) obrigatório.



Todos os pacotes, exceto pacotes, possuem um código legível por máquina e seu equivalente legível por humanos. Isso permite que você disque manualmente o código de marcação se por algum motivo o código não for lido pelo scanner.



Agregação e desagregação.

O sistema de etiquetagem incorpora características como agregação e desagregação de embalagens, até recentemente a agregação era realizada apenas na fábrica. Da fábrica, são transmitidas informações ao sistema não apenas sobre os códigos de marcação aplicados, mas também sobre sua agregação. O arquivo JSON transferido da fábrica para o BMS contém uma estrutura na qual é impossível enviar os dados de marcação sem os dados de agregação de fábrica. Na fábrica, a agregação de blocos / caixas / paletes é realizada digitalizando novamente a marcação de cada elemento aninhado e códigos de embalagem. Isso garante que o código seja legível e garante a agregação correta , ou seja, conformidade dos códigos incluídos na embalagem com o código da própria embalagem.

Portanto, procure manter a embalagem original até o último momento. Tendo aberto a caixa de fábrica, não é mais possível garantir que todos os blocos pertencem a esta caixa em particular. Olá a todas as redes de varejo que verificam blocos aninhados e caixas de fábrica abertas para isso;)



Recentemente, a função de agregação de cigarros apareceu na API para organizações comerciais. Vemos uma grande perspectiva aqui para embarque de paletes de armazéns logísticos.



A desagregação é realizada automaticamente assim que a unidade contida na embalagem for utilizada nos documentos de descarte ou mudança de propriedade. Em outras palavras, se você vende um maço de cigarros, o bloco em que estava localizado é automaticamente desagregado em maços, e a caixa em que esse bloco estava localizado é desagregada em blocos, etc. Será impossível usar outros códigos desagregados de um bloco, caixa, palete. Esta é uma solução muito elegante. Hoje, a caixa / bloco é desagregado apenas se a unidade aninhada foi descartada do lado do atual proprietário. Se uma terceira parte tentar vender seus cigarros fora da caixa, isso não levará à sua desagregação automática, uma vez que, de acordo com o GIS MT, a contraparte não era a proprietária no momento da leitura da etiqueta ao enviar as informações sobre o descarte.



, , , ,



(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

paletes, contêineres:

código de embalagem de envio de série, SSCC (20 caracteres) (padrão GS1-128 , indicado com ID de aplicativo AI (00))

exemplo: 00177102981700000049

Observação: no exemplo, o símbolo "FNC1" (código 29) não é usado em nenhum lugar. Ele é cortado quando substituído no FRT.



O arquivo UPD gerado para o envio das informações deve conter uma marca em seu nome - "MARK"



PDF: Recomendações metodológicas oficiais para o registro da UPD / UPDi / UKD



Amostras EUPD:



XML. Amostra de EPD de Megapolis.



XML. Amostra de EPD com diferentes tipos de embalagem.



XML. Aviso de amostra de esclarecimento de fatura.






All Articles