Äàííûå ôóíêöèè è ïðîöåäóðû ïðåäíàçíà÷åíû äëÿ ïîäãîòîâêè êîäîâûõ êîìáèíàöèé êîäà EAN13 äëÿ èõ ïîñëåäóþùåé ïå÷àòè øðèôòîì EanBwrP36Tt Normal.Ttf. Òåêñò íåîáõîäèìî ïîìåñòèòü â ðåäàêòîð VBScript íàáîðà äàííûõ øàáëîíà îò÷åòà íà çàêëàäêå «Ôóíêöèè» çàêëàäêè «Äîï. íàñòðîéêè» (ñì. ðàçäåë 15.2.5.3).

Public Function BrCodeEAN13()

    Dim Str

    Dim Bar

    Dim Result

    Result = ""

        If Not IsNull(TCSRpt.RptFunc.MainRptRecordSet.FieldByAlias("BARCODE_ALIAS")) Then

        Str = TCSRpt.RptFunc.MainRptRecordSet.FieldByAlias("BARCODE_ALIAS").AsString

            If Len(Str) > 0 Then

                Call EAN13CODE(Str, Bar)

                Result = Bar

            End If

        End If

    BrCodeEAN13 = Result

End Function

 

Public Sub EAN13CODE(Code, BarCode)

'Ï/ïðîãðàììà êîäèðîâàíèÿ êîäîì EAN13

Dim R

Dim A, B, C, ISP

A = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")

B = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")

C = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")

ISP = Array(Array("A", "A", "A", "A", "A", "A"), _

            Array("A", "A", "B", "A", "B", "B"), _

            Array("A", "A", "B", "B", "A", "B"), _

            Array("A", "A", "B", "B", "B", "A"), _

            Array("A", "B", "A", "A", "B", "B"), _

            Array("A", "B", "B", "A", "A", "B"), _

            Array("A", "B", "B", "B", "A", "A"), _

            Array("A", "B", "A", "B", "A", "B"), _

            Array("A", "B", "A", "B", "B", "A"), _

            Array("A", "B", "B", "A", "B", "A"))

' Ïðîâåðêè

    I = Len(Code)

If I = 12 Then

'Ðàñ÷åò êîíòðîëüíîé öèôðû

      CountParity = 0                                         '

    For I = 2 To 12 Step 2                                    'ñêëàäûâàåì

      CountParity = CountParity + Int(Mid(Code, I, 1))        '÷åòíûå öèôðû

    Next                                                    '

      CountNotParity = 0                                      '

    For I = 1 To 11 Step 2                                    'ñêëàäûâàåì

      CountNotParity = CountNotParity + CInt(Mid(Code, I, 1)) 'íå÷åòíûå öèôðû

    Next                                                    '

        ControlData = CountParity * 3 + CountNotParity        'Ñóììà öèôð íà ÷åòíûõ è íå÷åòíûõ ïîçèöèÿõ

        R = ControlData / 10        'Ðåçóëüòàò äåëåíèÿ ÷åòíûõ è íå÷åòíûõ öèôð íà 10

                                    '

        If R - Int(R) = 0 Then      'Åñëè ÷èñëî êðàòíî 10

            ControlData = 0         'òî êîíòðîëüíîå ÷èñëî íàéäåíî

        Else                        'åñëè íåò, òî

            I = 0

            Do                             'äîïîëíÿåì

             I = I + 1                     '÷èñëî,

             ControlData = ControlData + 1 'äî áëèæàéøåãî

             R = ControlData / 10          'êðàòíîãî 10

             If R - Int(R) = 0 Then        '

                ControlData = I

             Exit Do

             End If

            Loop                           '

        End If

     ControlData = ControlData

'Ñáîðêà øòðèõ-êîäà

    j = CInt(Mid(Code, 1, 1))              '(13ýë) Èñïîëíåíèå öèôðîâûõ çíàêîâ

    BarCode = Chr(Asc(Mid(Code, 1, 1)) - 13)        'Ôëàã êîäà, öèôðà áåç øòðèõà

    BarCode = BarCode & "!"                         'Êðàåâîé çíàê

    BarCode = BarCode & (A(CInt(Mid(Code, 2, 1))))  '(12ýë) âñåãäà À

  For I = 1 To 5                                    'Êîäèðóåì ñëåäóþùèå 5 ýëåìåíòîâ

    If ISP(j)(I) = "A" Then

       BarCode = BarCode & (A(CInt(Mid(Code, I + 2, 1)))) 'ýëåìåíò À

    Else

       BarCode = BarCode & (B(CInt(Mid(Code, I + 2, 1)))) 'ýëåìåíò B

    End If

  Next

    BarCode = BarCode & "-"                         'Ðàçäåëèòåëüíûé çíàê

  For I = 8 To 12                                   'Êîäèðóåì ñëåäóþùèå 6 ýëåìåíòîâ

    BarCode = BarCode & (C(CInt(Mid(Code, I, 1))))  '

  Next

    BarCode = BarCode & C(ControlData)           'Êîíòðîëüíàÿ öèôðà

    BarCode = BarCode & "!"                         'Êðàåâîé çíàê

Else

' åñëè ÷èñëî ïîçèöèé â êîäå íå 12

End If

End Sub

 

Ñì. òàêæå:

19.4 Ðàáîòà ñî øòðèõ-êîäàìè