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. Вообще-то  я это к тому, что может разработчики добавят новые механизмы работы с торговым оборудованием в стандартную поставку, коль теперь такое можно?! | 
			 
		  |