19.4.3 Êîäèðîâàíèå øòðèõ-êîäà äëÿ ïå÷àòè â äîêóìåíòàõ |
Äàííûå ôóíêöèè è ïðîöåäóðû ïðåäíàçíà÷åíû äëÿ ïîäãîòîâêè êîäîâûõ êîìáèíàöèé êîäà 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
Ñì. òàêæå: