GS1 Sunrise 2027. Անցում 2D շտրիխ կոդերի համաշխարհային առևտրի համար

Բլոգի կատեգորիա՝ Barcode.NET

07.08.2025

GS1 Sunrise 2027-ը գլոբալ նախագիծ է, որը նպատակ ունի ավանդական միաչափ (1D) EAN/UPC շտրիխ կոդերից անցնել երկչափ (2D) շտրիխ կոդերի՝ ապրանքի թափանցիկությունը, հետագծելիությունը և անվտանգությունը բարելավելու համար: 2027 թվականի վերջին աշխարհի մանրածախ առևտրի, առողջապահության և այլ բիզնեսներից պահանջվելու է ներդնել ապրանքի նույնականացման նոր ստանդարտներ իրենց վաճառքի կետերում (POS) և սպասարկման կետերում (POC): Sunrise 2027 նախաձեռնությունն արդեն փորձարկվում է 48 երկրներում, որոնք կազմում են համաշխարհային ՀՆԱ-ի 88%-ը, և դառնում է համաշխարհային առևտրի նոր նորմ:

VintaSoft-ը, որպես շտրիխ կոդերի ճանաչման մասնագիտացված գործիքի՝ VintaSoft Barcode .NET SDK-ի մշակող, այս փոփոխությունները դիտարկում է որպես ռազմավարական հնարավորություն՝ արդիականացնելու հաճախորդների բիզնես գործընթացները և ընդլայնելու SDK-ի հնարավորությունները նոր կարգավորող միջավայրում:



Ի՞նչ է GS1 Sunrise 2027-ը

Sunrise 2027-ը GS1 նախաձեռնություն է, որը պաշտոնապես հայտարարվել է 2020-ականներին՝ նպատակ ունենալով ապահովել, որ մինչև 2027 թվականը ամբողջ աշխարհի մանրածախ և լոգիստիկ համակարգերը կարողանան սկանավորել և մեկնաբանել 2D շտրիխ կոդերը՝ ծանոթ 1D շտրիխ կոդերի հետ մեկտեղ: Այնուամենայնիվ, հիմնական նպատակն է փոխարինել 1D ձևաչափերը ավելի բազմակողմանի 2D ձևաչափերով, որոնք կարող են ոչ միայն նույնականացնել ապրանքը, այլև փոխանցել լրացուցիչ տվյալներ՝ ժամկետի ավարտ, խմբաքանակի համար, ծագման երկիր, որակի վկայականներ և այլն:


Ինչու է ամբողջ արդյունաբերությունը անցնում դրան

Հին EAN/UPC ձևաչափը սահմանափակ էր.

Երկչափ շտրիխ կոդերը, ինչպիսիք են GS1 DataMatrix-ը և GS1 Digital Link QR-ը, լուծում են այս խնդիրները՝ թույլ տալով.


Ինչպե՞ս է սա ազդելու շուկայի մասնակիցների վրա։

GS1-ի կողմից նախաձեռնված երկչափ շտրիխ կոդերին անցումը կազդի ապրանքային շղթայի գրեթե բոլոր մասնակիցների վրա՝ արտադրողներից մինչև ծրագրային ապահովման մշակողներ։ Այս փոփոխությունները չեն կարող համարվել պարզ տեխնիկական արդիականացում. մենք խոսում ենք լոգիստիկայի, մանրածախ առևտրի և սպառողների հետ փոխազդեցության հիմնարար գործընթացների վերակառուցման մասին։

Արտադրող ընկերությունները կլինեն առաջիններից, ովքեր կզգան նոր ստանդարտի ազդեցությունը։ Նրանք ստիպված կլինեն հարմարեցնել արտադրական գծերը և փաթեթավորման գործընթացները՝ նոր շտրիխ կոդերը տպելու համար։ Եթե նախկինում բավարար էր փաթեթավորման վրա GTIN-ով գծային շտրիխ կոդ կիրառելը, այժմ 2D ձևաչափը պետք է ներառի շատ ավելի շատ տեղեկատվություն՝ պիտանելիության ժամկետ, խմբաքանակի համար, կազմի մասին տեղեկատվություն, իսկ երբեմն նույնիսկ հղում դեպի թվային վկայական կամ կայք։ Այս ամենը պահանջում է ինչպես սարքավորումների, այնպես էլ նոր շտրիխ կոդերի ստեղծումն ու կառավարումն ապահովող ՏՏ ենթակառուցվածքի արդիականացում։

Մանրածախ վաճառողների և լոգիստիկ օպերատորների համար հիմնական մարտահրավերը կլինի դրամարկղային մեքենաների և պահեստների սկանավորող սարքերը հարմարեցնելու անհրաժեշտությունը։ Չնայած ժամանակակից սկաներների մեծ մասն արդեն իսկ աջակցում է 2D շտրիխ կոդերը, դրանցից ոչ բոլորն են օպտիմալացված GS1 ստանդարտների համար։ Սա նշանակում է, որ ոչ միայն սարքավորումները պետք է թարմացվեն, այլև ծրագրային ապահովումը պետք է փոփոխվի՝ նոր տվյալների դաշտերը ճիշտ ճանաչելու և մշակելու համար։

Ծրագրային լուծումների մշակողները, այդ թվում՝ հաշվապահական համակարգեր, ERP, դրամարկղային մեքենաների հավելվածներ և բջջային լուծումներ ստեղծողները, պետք է պատրաստ լինեն նաև շտրիխ կոդավորման ձևաչափերի փոփոխությանը։ Անհրաժեշտ է ոչ միայն ավելացնել նոր սիմվոլային համակարգերի աջակցությունը, այլևայլև տվյալների կառուցվածքի ճիշտ մեկնաբանությունն իրականացնել GS1 ստանդարտներին համապատասխան: Սա ներառում է կիրառական նույնականացուցիչների (AI) մշակումը, ներդրված դաշտերի վերլուծությունը և, GS1 թվային կապի ձևաչափի օգտագործման դեպքում, արտաքին վեբ ծառայությունների հետ փոխազդեցությունը: Այստեղ ճանաչման ճշգրտությունը հատկապես կարևոր է, քանի որ տվյալների մեկնաբանման սխալը կարող է հանգեցնել լոգիստիկայի, վերադարձի և նույնիսկ իրավական հետևանքների:


Ինչն է դարձնում 2D շտրիխ կոդը յուրահատուկ

2D շտրիխ կոդերը ավտոմատ նույնականացման համակարգերի հաջորդ զարգացումն են: Դրանք ոչ միայն փոխարինում են գծային շտրիխ կոդերը, այլև բացում են նոր հնարավորություններ բիզնեսի, արտադրության և լոգիստիկայի համար՝ իրենց բազմակողմանիության և տեղեկատվական հարստության շնորհիվ:

Ի տարբերություն 1D շտրիխ կոդերի (օրինակ՝ EAN/UPC), որոնք կարող են պարունակել միայն հիմնական ապրանքի նույնականացուցիչ (GTIN), 2D շտրիխ կոդերը կարող են փոխանցել ժամանակակից մատակարարման շղթաների և թվային ծառայությունների համար անհրաժեշտ պարամետրերի ամբողջ շրջանակ:

Երկչափ շտրիխ կոդերի հիմնական առավելություններն են՝

Նոր շտրիխ կոդավորման համակարգին անցումը խրախուսում է բիզնեսներին ոչ միայն համապատասխանել ստանդարտներին, այլև կառուցել թվային էկոհամակարգեր, որոնք կապում են ֆիզիկական փաթեթավորումը և առցանց փորձը։


GS1 Sunrise 2027 ներդրման փուլեր

Տեղեկատվական և կամավոր փուլ

Գիտելիքների տարածում, փորձնական նախագծեր, ներքին համակարգերի հարմարեցում, կրկնակի պիտակավորման (1D + 2D) փորձարկում։ Ընկերությունները ժամանակ են ստանում տեխնոլոգիաները արդիականացնելու և փորձարկելու համար։


Պարտադիր ներդրում ըստ արդյունաբերության և տարածաշրջանի

Անցում 2D շտրիխ կոդերի պարտադիր օգտագործմանը որոշակի ապրանքային կատեգորիաների և տարածքների համար։ Հիմնական ուշադրությունը կենտրոնացած է POS սարքավորումների թարմացման, անձնակազմի վերապատրաստման, մատակարարման շղթաների համատեղելիության ապահովման վրա։


Լիակատար համապատասխանություն և ինտեգրում

Մինչև 2027 թվականի վերջը ստանդարտով ընդգրկված բոլոր ձեռնարկությունները պետք է ամբողջությամբ անցնեն 2D շտրիխ կոդերի՝ մինչև հնարավորության դեպքում դասական EAN/UPC-ի փոխարինումը։ Ստանդարտների և դրանց աջակցության անընդհատ թարմացում։


Անցման ընթացքում մարտահրավերներ և լուծումներ

Ավանդական գծային շտրիխ կոդերից 2D ձևաչափերի անցումը ոչ միայն տեխնոլոգիական արդիականացում է,այլև կազմակերպչական մարտահրավեր։ Ընկերությունները բախվում են մի շարք գործնական, տեխնիկական և կարգավորող մարտահրավերների, հատկապես, եթե նրանց ենթակառուցվածքը դեռևս գերակշռում է սկանավորման, տպագրության կամ շտրիխ կոդերի մշակման հնացած լուծումներով։

Ամենատարածված դժվարությունները ներառում են՝

Չնայած այս մարտահրավերներին, ճիշտ պլանավորումը և ճիշտ գործիքների ընտրությունը կարող են անցումը շատ ավելի հեշտ դարձնել:

Գործնականում կիրառելու համար խորհուրդ է տրվում կիրառել հետևյալ հիմնական լուծումները՝

2D շտրիխ կոդերին անցումը նախագիծ է, որը պահանջում է համապարփակ մոտեցում, բայց ժամանակակից գործիքների և գործընկերների շնորհիվ այն դառնում է ոչ միայն իրագործելի, այլև շահութաբեր՝ բիզնեսի զարգացման հեռանկարների առումով:


Ինչպես է VintaSoft շտրիխ կոդը...NET SDK-ն օգնում է բիզնեսներին համապատասխանել GS1 Sunrise 2027 ստանդարտին

VintaSoft-ի արտադրանքը՝ VintaSoft Barcode .NET SDK-ը, լուծում է ինչպես միաչափ, այնպես էլ երկչափ շտրիխ կոդերի, այդ թվում՝ DataMatrix և QR Code շտրիխ կոդերի արագ և ճշգրիտ ճանաչման խնդիրները: Սա թույլ է տալիս ընկերություններին.

GS1 Sunrise 2027-ին անցումը խթանում է թվայնացումը, թափանցիկությունը և անվտանգությունը ժամանակակից մատակարարման շղթայում: Կարևոր է հիմա պատրաստվել փոփոխություններին, արդիականացնել նշագրման և ճանաչման գործիքները՝ ներդրումներ կատարելով այնպիսի լուծումներում, ինչպիսին է VintaSoft Barcode .NET SDK-ը՝ նոր 2D շտրիխ կոդերի արդյունավետ ընթերցման և մշակման համար:


Ահա C# կոդ, որը ցույց է տալիս, թե ինչպես ստեղծել GS1 թվային կապի շտրիխ կոդ և ճանաչել այն։
using System;
using System.Text;

using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Barcode.GS1;
using Vintasoft.Imaging;

/// <summary>
/// Test that shows how to encode the barcode data in GS1 Digital Link format,
/// create image with GS1 Digital Link barcode,
/// read GS1 Digital Link barcode from image and print data stored in GS1 format.
/// </summary>
class GS1DigitalLinkExample
{

    /// <summary>
    /// Runs the test (available barcode types QR, DataMatrix).
    /// </summary>
    public static void TestGS1DigitalLink(BarcodeType digitalLinkBarcodeType)
    {
        // GS1 Digital Link barcode
        GS1DigitalLinkBarcodeSymbologySubset barcodeSubset;
        if (digitalLinkBarcodeType == BarcodeType.QR)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkQR;
        else if (digitalLinkBarcodeType == BarcodeType.DataMatrix)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkDataMatrix;
        else
            throw new NotSupportedException();

        // form the GS1 Application identifiers
        //
        GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
        GS1ApplicationIdentifier ai;
        // 01 - Global Trade Item Number
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
        aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
        // 310 - Net weight, kilograms
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
        aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
        // 30 - Count of Items
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
        aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
        // 90 - Company Internal Information
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
        aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
        // create GS1 value item
        GS1DigitalLinkValueItem gs1DigitalLinkValue = new GS1DigitalLinkValueItem(new GS1DigitalLink("vintasoft.com", aiValues));

        // create the barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // specify that writer must create output image as 24-bpp image
            writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;

            // encode GS1 Digital Link barcode
            barcodeSubset.Encode(gs1DigitalLinkValue, writer.Settings);

            // create image with barcode
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // delete aiValues array
                aiValues = null;

                // read barcode with GS1 value

                // create barcode reader
                using (BarcodeReader reader = new BarcodeReader())
                {
                    // specify that reader must search for GS1 Digital Link barcodes only

                    reader.Settings.ScanBarcodeTypes = BarcodeType.None;
                    reader.Settings.ScanBarcodeSubsets.Add(barcodeSubset);

                    // read barcode from image
                    IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);

                    // gets GS1 value from barcode value
                    gs1DigitalLinkValue = (GS1DigitalLinkValueItem)(infos[0].ValueItems[0]);

                    // print barcode type
                    Console.WriteLine("Barcode Type: {0}", infos[0].BarcodeType);
                    Console.WriteLine();

                    // print GS1 Digital Link URI value
                    Console.WriteLine("GS1 Digital Link URI:\n{0}", gs1DigitalLinkValue.DigitalLink.DigitalLinkUri);
                    Console.WriteLine();

                    // gets a GS1 Application identifiers from barcode value
                    aiValues = gs1DigitalLinkValue.ApplicationIdentifierValues;

                    StringBuilder printableValue = new StringBuilder();
                    // print Application identifiers values
                    for (int i = 0; i < aiValues.Length; i++)
                    {
                        GS1ApplicationIdentifierValue aiValue = aiValues[i];
                        ai = aiValue.ApplicationIdentifier;
                        Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
                        Console.WriteLine(string.Format("Application identifier   : {0}", ai.ApplicationIdentifier));
                        Console.WriteLine(string.Format("Value                    : {0}", aiValue.Value));
                        Console.WriteLine(string.Format("Data title               : {0}", ai.DataTitle));
                        Console.WriteLine(string.Format("Data content             : {0}", ai.DataContent));
                        Console.WriteLine(string.Format("Format                   : {0}", ai.Format));
                        Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
                        Console.WriteLine(string.Format("Is variable length       : {0}", ai.IsVariableLength));
                        Console.WriteLine();
                        printableValue.Append(aiValue.ToString());
                    }

                    // print GS1 printable value
                    Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
                }
            }
        }
    }
}