shura_k
Joined: 10 Oct 2003 Posts: 342 Location: Александр Occupation: Специалист Interests: Калининград
|
Posted: 13 Oct 2005 10:54 Post subject: АТОЛ: Драйвер весов с печатью этикеток |
|
|
Вот используя эту библиотеку, кстати OLE,
http://www.atol.ru/products/software/dr/dr_ves_print/index.html
наваял загрузку весов прямо из бэста
Получилось очень прикольно, если учесть что библиотека понимает очень много разных типов весов.
Code: | FUNCTION MAIN
LOCAL oApp,scale,nProcess
scale := ARRAY(2)
TRY
oApp := CreateObject( "AddIn.LP45" )
CATCH
Alert("Scale not found!")
RETURN .F.
END
DBPush()
if type('aPars')!='A'
RETURN .F.
endif
if len(apars)==0
RETURN .F.
endif
if aPars[1]==1
oApp:ShowProperties()
endif
if aPars[1]==2
scale:=SCALE_LIST()
oApp:CurrentDeviceNumber:=val(scale[1])
oApp:Clear()
oApp:ShowProgress:=.T.
oApp:DeviceEnabled:=.F. //TEST
oApp:CacheReport:=.T.
NETUSE("sweight",LOADPATH()+"\TZ\sweight.dbf",,.F.)
NETUSE("m_price",LOADPATH()+"\TZ\m_price.dbf",,.F.)
sweight->(ordsetfocus("TAG_CODE"))
sweight->(dbGoTop())
m_price->(ordsetfocus("TAG_CODE"))
m_price->(dbGoTop())
oApp:BeginAdd()
sweight->(SetScope())
sweight->(SetScope("UPPER(SHOP+CODE)",UPPER(scale[2]+scale[1])))
sweight->(dbGoTop())
sweight->(f_SetRelation("m_price", "UPPER(shop+grup+nnum)"))
nProcess:=Proces_Ini(sweight->(LastRec()),,,"Обработка")
While(sweight->(!EOF()))
if (len(alltrim(sweight->status))==0).and.;
(len(alltrim(sweight->barcode))!=0)
oApp:PLU:=val(alltrim(sweight->plu))
oApp:ICode:= val(substr(sweight->barcode,3,5))
oApp:Price:= m_price->sumoutr
oApp:Name:= oemtoansi(upper(substr(sweight->name,1,20)))
oApp:Name2:= oemtoansi(upper(substr(sweight->name,21,20)))
oApp:GCode:= val(substr(sweight->barcode,1,2))
oApp:MsgNo:= 0
oApp:Tare:= 0
oApp:Life:= 0
oApp:WareType:= 0
oApp:SetRecord()
endif
Proces_Update(nProcess)
sweight->(dbSkip())
ENDDO
Proces_End(nProcess)
oApp:EndAdd()
m_price->(dbCloseArea())
sweight->(dbCloseArea())
endif
DBPop()
RETURN .T.
STATIC FUNCTION SCALE_LIST()
local aSet,aSetKey,nTop,nBot,cColHead,aBlockCols,cCurproc,scl
scl := ARRAY(2)
aSet:=SaveSet()
aSetKey:=SaveSetKey()
NETUSE("work",LoadPath()+"\tz\mscales.dbf",,.F.)
DISPBOX(2,0,22,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + ;
Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ),"W+/B")
nTop:=3
nBot:=21
cColHead:={"Номер Наименование"}
cCurProc:={||"2"}
aBlockCols:={{{||field->code},0},{{||alltrim(field->name)},9}};
WORK->( INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc,;
,,,,,;
,,,,,))
scl[1]:=work->code
scl[2]:=work->shop
WORK->( DBCLOSEAREA() )
RestSetKey(aSetKey)
RestSet(aSet)
RETURN scl |
P.S. Там где написано TEST надо заменить на .Т., для реальной работы с железом. Номера весов в БЭСТ и в драйвере должны совпадать!
P.S.S. Вообще-то я это к тому, что может разработчики добавят новые механизмы работы с торговым оборудованием в стандартную поставку, коль теперь такое можно?! |
|