Äëÿ âûïîëíåíèÿ äàííîãî ìàêðîñà, íóæíî â ðåæèìå âåäåíèÿ íîìåíêëàòóðíîãî ñïðàâî÷íèêà îòìåòèòü ïîçèöèè, êîòîðûì áóäåò ïðèñâàèâàòüñÿ øòðèõ-êîä, è çàïóñòèòü ìàêðîñ «Íàçíà÷èòü êîä EAN13 âûäåëåííûì ïîçèöèÿì íîìåíêëàòóðû».
Äàííûé ïðèìåð èëëþñòðèðóåò èñïîëüçîâàíèå âíåøíåãî êîäà (êîäà, çàäàâàåìîãî ïîëüçîâàòåëåì), ïîñòðîåííîãî íà îñíîâå èìåþùèõñÿ â áàçå äàííûõ èäåíòèôèêàòîðîâ íîìåíêëàòóðû äëÿ ïîëó÷åíèÿ óíèêàëüíûõ 12-ðàçðÿäíûõ êîäîâûõ êîìáèíàöèé êîäà EAN13.
Sub FormMacro_NBarCodeINS_EAN13(TCSActiveModule) '' Íàçíà÷åíèå øòðèõ-êîäà EAN13 âûäåëåííûì ïîçèöèÿì íîìåíêëàòóðû' ' ÏÐÈÌÅÐ ÈÑÏÎËÜÇÎÂÀÍÈß ÂÍÅØÍÅÃÎ ÊÎÄÀ (ÊÎÄÀ ÇÀÄÀÂÀÅÌÎÃÎ ÏÎËÜÇÎÂÀÒÅËÅÌ)'' Ôîðìàò êîäà: 0ÕÕÕÕÕÕÕÕÕÕÕ' ' 0 - ïðèçíàê òîãî, ÷òî êîä îòíîñèòñÿ ê íîìåíêëàòóðíîé ïîçèöèè' ÕÕÕÕÕÕÕÕÕÕÕ - 11 ñèìâîëîâ ID íîìåíêëàòóðû ' Dim I,J,K,L,M 'Ñëóæåáíûå ïåðåìåííûå Dim BarCodes 'Øòðèõ-êîäû îáúåêò Dim RowsCount 'Êîëè÷åñòâî âûäåëåííûõ çàïèñåé Dim msBM() 'Ìàññèâ ññûëîê íà âûäåëåííûå çàïèñè Dim IBar 'Øòðèõ-êîä Dim IStr 'Ñëóæåáíàÿ ñòðîêîâàÿ ïåðåìåííàÿ RowsCount = TCSActiveModule.SelectedRowsCount ' Çàïîìíèòü êîëè÷åñòâî âûäåëåííûõ çàïèñåé If RowsCount > 0 Then ' Åñëè âûäåëåííûå çàïèñè åñòü, òî Redim msBM( RowsCount - 1 ) ' Îïðåäåëèòü íåîáõîäèìûé ðàçìàð ìàññèâà äëÿ çàïîìèíàíèÿ ññûëîê For I = 0 To RowsCount - 1 ' Ïåðåáðàòü âûäåëåííûå çàïèñè ñïåöèôèêàöèè If TCSActiveModule.GotoSelectedRow(I) Then ' Âñòàòü íà î÷åðåäíóþ âûäåëåííóþ çàïèñü msBM( I ) = TCSActiveModule.GetBookmark ' È çàïîìíèòü åå â ìàññèâåEnd If '
Next ' TCSActiveModule.Refresh ' Cáðîñèòü âûäåëåíèå
K=0 ' Ñ÷åò÷èê çàïèñåé For I = 0 To RowsCount - 1 ' Èäòè ïî ìàññèâó ññûëîê Call TCSActiveModule.GotoBookmark( msBM( I ) ) ' Ïîçèöèîíèðîâàòüñÿ íà òåêóùóþ çàïèñü Set BarCodes = TCSActiveModule.Properties("BarCodes").AsIDispatch
If BarCodes.Properties( "BAR_CODE" ).IsNull Then ' Åñëè ó ïîçèöèè íåò øòðèõ-êîäà
K=K+1 ' Äîáàâëÿåì ñ÷åò÷èê
IStr=Cstr(TCSActiveModule.Properties( "ID" ).AsInteger)'Èäåíòèôèêàòîð íîìåíêëàòóðû
If Len(IStr)>11 Then ' Åñëè èäåíòèôèêàòîð ñëèøêîì äëèííûé òî Call TCSApp.ShowMessageBox("Ñîîáùåíèå", "Êîä EAN13 íå ìîæåò îáåñïå÷èòü óíèêàëüíîñòü ïîçèöèè") Else ' Åñëè äî 11 ñèìâîëîâ, òî For L=1 To 11-Len(IStr) ' Ñôîðìèðîâàòü óíèêàëüíûé êîä IStr="0" & IStr ' Äîïîëíèòü êîä íóëÿìè Next ' IStr="0" & IStr ' Äëÿ îáåñïå÷åíèÿ óíèêàëüíîñòè øòðèõ-êîäû â íîìåíêëàòóðå áóäåì íà÷èíàòü ñ "0" End If ' Call BarCodes.CreateNew ' Ñîçäàäèì íîâóþ çàïèñü â øòðèõ-êîäåBarCodes.Properties("BAR_CODE").Value = IStr ' Ïðèñâîèì øòðèõ-êîä
BarCodes.Properties("DEFAULT").Value = "T" ' Ñäåëàåì åãî îñíîâíûì
BarCodes.Properties("REM").Value = "EAN13" ' Çàíåñåì êîììåíòàðèé
On Error Resume Next ' è
Call BarCodes.SaveChanges ' Ñîõðàíèì èçìåíåíèÿ Call BarCodes.CancelChanges '  ñëó÷àå îøèáêè îòìåíèì èõEnd If '
Set BarCodes = Nothing ' Next ' Âçÿòü íîâóþ çàïèñü For I = 0 To RowsCount - 1 ' Èäòè ïî ìàññèâó ññûëîê Call TCSActiveModule.GotoBookmark( msBM( I ) ) ' Ïîçèöèîíèðîâàòüñÿ íà òåêóùóþ çàïèñüTCSActiveModule.CurrentRowSelected = True ' Âåðíóòü âûäåëåíèå ñòðîêè
Next 'Call TCSApp.ShowMessageBox("Ñîîáùåíèå", "Øòðèõ-êîä íàçíà÷åí äëÿ " + Cstr(K) + " çàïèñåé")
If K=0 Then Call TCSApp.ShowMessageBox("Ñîîáùåíèå", "Âûäåëåííûì ïîçèöèÿì íîìåíêëàòóðû øòðèõ-êîä óæå áûë íàçíà÷åí") End If Else ' Åñëè âûäåëåííûõ çàïèñåé íåò Call TCSApp.ShowMessageBox("Ñîîáùåíèå", "Âûäåëèòå çàïèñè äëÿ êîòîðûõ íåîáõîäèìî óêàçàòü øòðèõ-êîäû") End If 'End Sub
! Ñì. òàêæå: