kajzii
Rejestracja: 2011-01-03, 14:47 Posty: 13
|
Import towarów - aktualizacja stanów minimalnych
Witam, mam w Symfonii Forte Handel v2010.1 import danych dotyczących towarów. Za jego pomocą chce uaktualnić minima na towarach.
Przygotowanie danych:
1. Najpierw wykonuję eksport towarów do excela, układ kolumn jak poniżej:
kod nazwa cena A cena B cena C Cena profilu masa
95708 słup/rygiel 185 mm 782,6 0 0 0 28,76
powierzchnia Cena Zak Stan Min Jm
3,29 316,81 50 szt
2. Zmieniam stany minimalne w kol. Stan Min.
3. Później wykonuje import danych dotyczących towarów, lecz dane nieaktualizują się.
Poniżej podaję kod do importu danych towarów:
//"imtwbly.sc","Import danych dot. towarów", "\Procedury\Raporty operacje kartotek\Towary\",0,1.0.0,SYSTEM
dispatch xTw = xFactory.NewObject("BTowar")
long idtw, row
int err
int sub OnCommand_E(int id, int msg)
endsub
string sPlkIni = KatalogFirmy() + "firma.hm"
string sPlk = GetIni(GetReportName(),"path", sPlkIni)
if splk == "" then sPlk = "C:\\plik.xls"
int sub PrzegladajPlik() // 0 - zapisz, 1 - otworz
sPlk = FileDlg( 1, "Pliki (*.xls)|*.xls*|Wszystkie pliki (*.*)|*.*" )
if sPlk then PrzegladajPlik = 1
endsub
int sub ExForm()
int lrv
Form "Wybór pliku",530,140
Group "Otwórz plik", 10, 10, 505, 50
edit "Nazwa &Pliku",sPlk,85,30,350,20
button "Przeglądaj",450,27,60,25,PrzegladajPlik()
button "O&K",330,80,80,25,2
button "&Anuluj",430,80,80,25,-1
lrv = execform OnCommand_E
PutIni(GetReportName(),"path", sPlk, sPlkIni)
if lrv != 2 then error ""
if (find file sPlk) == "" then Message using "Plik: '%s' nie istnieje.", sPlk
EndSub
ExForm()
dispatch excel
excel.Create("excel.Application")
dispatch wb = excel.Workbooks.Open(sPlk)
dispatch ws = wb.Worksheets(1)
string sub XGetErr(int nErr)
int i
string sGetError
if nErr==771 then
for i=1 to i>xFactory.komunikaty.count
if xFactory.komunikaty.item(i).status then
sGetError+= "Błąd nr."+(using "%d",xFactory.komunikaty.item(i).id)+": '"+xFactory.komunikaty.item(i).tresc+"'\n"//Atrybut: "+xFactory.komunikaty.item(i).nazwapola+"\n"
else
sGetError+="OSTRZEŻENIE !! "+xFactory.komunikaty.item(i).tresc+"\n"
endif
next i
else
Select case nErr
case -4101
sGetError = "Nie odnaleziono rekordu w bazie XT"
case -4010
sGetError = "Nieunikalny kod towaru."
case -4013
sGetError = "Nie podano nazwy obiektu."
case 4
sGetError = "Nie odnaleziono obiektu."
case -4201
sGetError = "Nie można zapisac obiektu, w bazie danych istnieje już obiekt posiadający ten sam skrot i charakter."
case else
sGetError = "Nieznany błąd nr. "+(using "%d",nErr)
endselect
endif
XGetErr = sGetError
endsub
string sKodTw, sTmp
row=2
while ws.cells(row, 1).text != ""
sKodTw = ws.cells(row, 1).text
sTmp = using "|%s|", sKodTw
//xTw.clear()
err = xTw.load(using "kod=\t%s\t", sKodTw)
if err then message XGetErr(err) : goto nxRow
err = xTw.Edit
xTw.CenaA.cena = ws.Cells(row,3).Value
xTw.CenaB.cena = ws.Cells(row,4).Value
xTw.CenaC.cena = ws.Cells(row,5).Value
xTw.NazwaFiskal = ws.Cells(row,6).Value
xTw.PrzelMasa = ws.Cells(row,7).Value
xTw.PrzelJednUz = ws.Cells(row,8).Value
err = xTw.Save
if err then message using "Błąd zapisu danych towaru: %s", xTw.kod
popup(2)
nxRow:
row+=1
Wend
Excel.quit()
message "koniec"
Jeżeli, ktoś może widzi bład w tym imporcie to proszę o pomoc.
|