|
|
Strona 1 z 1
|
[ Posty: 4 ] |
|
Budowa formatki z typami dokumentów i seriami numeracji HMP
Autor |
Wiadomość |
wojtek
Rejestracja: 2010-02-10, 21:24 Posty: 260 Pomógł: 4
|
Budowa formatki z typami dokumentów i seriami numeracji HMP
Witam, Mam problem z budowa formatki. Chodzi mi o to by na formatce były dwie listy typu cmbbox, jedna z typami dokumentów zakupu, druga z seriami dokumentów , ale ma prezentowć tylko serie zwiazane z typem dokumentu wybranym na pierwszej liście Pierwsza listę zbudowałem bez problemu i prezentuje mi żadane typy dokumentów. Natomiast mam problem z funkcja OnCommand, bo nie wiem jak dynamicznie budować listę z seriami numeracji w zależnosci od wyboru typu dokumentu którego dokonałem. Poiżej fragmenty kodu: Kod: setkey(bXt,"super") setkeyseg(bXt,"super",7010) int idDefDok = GetRec(bXt,FS) int ik = 1 int dl1 = Size(stabTypDk) int dl2 int rodzajDok
while !idDefDok rodzajDok = GetField(bXt, "subtypi") if GetField(bXt, "subtypi") == 40 && (GetField(bXt, "super") == 7010 || GetField(bXt, "super") == 7012) then if ik>1 then dl2 = grow stabTypDk,1 stabTypDk(ik) = GetField(bXt, "kod") ik+=1 endif idDefDok=GetRec(bXt,NX) wend
int sub OnCommand_E(int id, int msg) IF ID == FRM_TYPDK THEN setkey(bXt,"kod") setkeyseg(bXt,"kod",sTyp) u=GetRec(bXt,FS) while !u && getfield(bxt,"kod") == sTyp //&& getfield(bxt,"typi")==32 idd =GetField(bXt,"id") setkey(BxT,"super") setkeyseg(bXt,"super",idd) p=getrec(bXt,FS) while !p if ik>1 then dl2 = grow stabseriaDk,1 stabseriaDk(ik) = GetField(bXt, "kod") ik+=1 p=getrec(bXt,NX) wend u=GetRec(bXt,NX) wend ENDIF
endsub
int sub ExForm()
int lrv //sPlk = GetIni("Excel","sciezka") Form "Wybór Pliku - import WB Nordea",550,310 Group "Otwórz plik", 10, 10, 520, 125 edit "Nazwa &Pliku",sPlk,120,30,290,20 button "Przeglądaj",420,27,90,25,PrzegladajPlik() frm_typdk=cmbbox "Typ Dokumentu: ",sTabTypDk,sTyp, 120,80,100,90 frm_sn=cmbbox "Seria numeracji: ",sTabSeriaDk,sSeria, 120,110,100,90 button "O&K",160,240,80,25,2 button "&Anuluj",280,240,80,25,-1
lrv = execform OnCommand_E
if lrv <= 0 then error "" endsub
Pomoże ktoś?
|
2015-06-26, 18:32 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Re: Budowa formatki z typami dokumentów i seriami numeracji
pokaż jakiś działający kawałek kodu, który można przetestować.
|
2015-06-29, 08:10 |
|
|
wojtek
Rejestracja: 2010-02-10, 21:24 Posty: 260 Pomógł: 4
|
Re: Budowa formatki z typami dokumentów i seriami numeracji
Cały kod - dziala - problem dla mnie to tylko to by na formate były dwa rozwijane pola - pierwsze to typ dokumentu zakupu zdefiniowany w systemie - to działa, drugie to serie numeracji ale tylko dla typu dokumentu wybranego z pierwszej rozwijanej listy. Wszystko rozbija się o funkcje OnCommand Kod: string sTabTypDk(1) //= "FVZ","FVS","WNT" string sTabSeriaDk(1)//= "sFVZ","sFVS","sWNT"
string sTyp,sSeria,sDataW,sNrObcy,sDataO,sDataZ,sKodKh,sOpis,sRejPlat,sFormPlat,sKodTw,sIlosc,sCenaSp,sPlk,sWaluta,sKurs int wyst_czy_buf,licz,frm_typdk,frm_sn long idd,u,p STRING TEST
wyst_czy_buf = 0
//========================================= int bXt = Open KatalogFirmy()+"51xt.dat" For base "XT" BaseError( bXt,4 )
setkey(bXt,"super") setkeyseg(bXt,"super",7010) int idDefDok = GetRec(bXt,FS) int ik = 1 int dl1 = Size(stabTypDk) int dl2 int rodzajDok
while !idDefDok rodzajDok = GetField(bXt, "subtypi") if GetField(bXt, "subtypi") == 40 && (GetField(bXt, "super") == 7010 || GetField(bXt, "super") == 7012) then if ik>1 then dl2 = grow stabTypDk,1 stabTypDk(ik) = GetField(bXt, "kod") ik+=1 endif idDefDok=GetRec(bXt,NX) wend ik=1 dl2=0 //=======================================
sTyp = sTabTypDK(1) sSeria = sTabSeriaDk(1)
record rec_ string recKodtw[150] string recIlosc[20] string recWartn[30] string recKoszt[30] endrec
rec_ recPoz(1)
int sub OnCommand_E(int id, int msg) IF ID == FRM_TYPDK THEN setkey(bXt,"kod") setkeyseg(bXt,"kod",sTyp) u=GetRec(bXt,FS) while !u && getfield(bxt,"kod") == sTyp //&& getfield(bxt,"typi")==32 idd =GetField(bXt,"id") setkey(BxT,"super") setkeyseg(bXt,"super",idd) p=getrec(bXt,FS) while !p if ik>1 then dl2 = grow stabseriaDk,1 stabseriaDk(ik) = GetField(bXt, "kod") ik+=1 p=getrec(bXt,NX) wend u=GetRec(bXt,NX) wend ENDIF
endsub int sub PrzegladajPlik()
sPlk = FileDlg( 1, "Pliki (*.txt)|*.txt|Pliki (*.csv)|*.csv|Wszystkie pliki (*.*)|*.*" ) if sPlk then PrzegladajPlik = 1 else PrzegladajPlik = 0 endif
endsub //Formatka int sub ExForm()
int lrv //sPlk = GetIni("Excel","sciezka") Form "Wybór Pliku - import WB Nordea",550,310 Group "Otwórz plik", 10, 10, 520, 125 edit "Nazwa &Pliku",sPlk,120,30,290,20 button "Przeglądaj",420,27,90,25,PrzegladajPlik() frm_typdk=cmbbox "Typ Dokumentu: ",sTabTypDk,sTyp, 120,80,100,90 frm_sn=cmbbox "Seria numeracji: ",sTabSeriaDk,sSeria, 120,110,100,90 button "O&K",160,240,80,25,2 button "&Anuluj",280,240,80,25,-1
lrv = execform OnCommand_E
if lrv <= 0 then error "" endsub
ExForm()
int plk = open splk for input if !plk then Message using "Nie odnazeziono pliku:\n%s", sPlk :error ""
while input #plk, buf licz+=1 if licz > 1 then if find regular "{*}\t{*}\t{*}\t{*}\t{*}\t{*}$" then if recPoz(1).recKodtw then grow recPoz,1 recPoz(licz-1).recKodtw = regular 2 recPoz(licz-1).recIlosc = regular 4 recPoz(licz-1).recWartn = regular 5 recPoz(licz-1).recKoszt = regular 6 endif else if find regular "{*}\t{*}$" then sWaluta = regular 1 sKurs = regular 2 endif endif
wend
//Tworzenie dokumentu
iorec rec int count, i long iddk
rec.SetField( "typ_dokumentu", sTyp ) rec.setfield( "seria", sSeria ) rec.SetField( "data_Wystawienia", sDataW ) rec.setfield( "numer_obcy", sNrObcy ) rec.setfield( "data_obcy", sDataO ) rec.setfield( "data_zakupu", sDataZ ) rec.setfield( "waluta", sWaluta ) rec.setfield( "kurs", sKurs )
rec.SetField( "Khkod", sKodKh )
rec.setfield("opis", sOpis ) rec.SetField("rezerwacja", "0") rec.setfield("rejestr_platnosci", sRejPlat ) rec.setfield("forma_platnosci", sFormPlat )
count = size(recPoz)
for i=1 to i>count rec.BeginSection("Pozycja dokumentu") rec.SetField("kod", recPoz(i).recKodTw) rec.SetField("ilosc", recPoz(i).recIlosc) rec.SetField("cena", recPoz(i).recWartn) rec.SetField("koszt", recPoz(i).recKoszt) rec.EndSection() Next i iddk=rec.importZK() if wyst_czy_buf == 1 then//1 - wystawia, 0, pozostawia w buforze iddk=WystawDokumentHandlowy(iddk,1,0) endif
nooutput()
|
2015-06-29, 13:43 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Re: Budowa formatki z typami dokumentów i seriami numeracji
Masz trochę błędów. Zwłaszcza w OnCommand. Kiedyś zamieszczałem taki przykład, może Cię naprowadzi Załącznik:
hmmixwyb01.jpg [ 54.11 KiB | Przeglądany 3283 razy ]
Kod: //"mixdrz.sci","Mix-soft Drzewo - include",70012,0,1.0.4,SYSTEM //" Raporty Mix-soft",2400,14,62
// typy kolumn #define ftString 0 #define ftInt 1 #define ftLong 16 #define ftMoney 2 #define ftDate 3 #define ftBitmap 17 #define ftCheck 7 #define ftDrop 128
// kolumny #define COL_NAZWA 0 #define COL_OPCJA 1 #define COL_WART 2 #define COL_VALUE 3
#define COL_dg_SKROT 0 #define COL_dg_ID 1 #define COL_dg_CHECK 2 #define COL_dg_NAZWA 3 #define COL_dg_TYP 4 #define COL_dg_VALUE 5 #define COL_dg_SERIA 6
string sCo int iU
dispatch dgDok
//------------------------------------------------ int Sub AddColumn(dispatch g, string ColName, int ColWidth, int ColType, int ColSize, int ColHidden, int ColLocked) //------------------------------------------------ int col
G.ColumnCount = G.ColumnCount + 1 col = G.ColumnCount - 1 G.Columns(col).Name = ColName G.Columns(col).Width = ColWidth G.Columns(col).FieldType(ColType,ColSize) G.Columns(col).hidden = ColHidden G.Columns(col).Locked = ColLocked
endsub
//---------------------------------------------------------------------------------------------------- int Sub WczytajListeDok() //----------------------------------------------------------------------------------------------------
string sTypy = GetIni("Dokumenty", (using "%l",CurrentMag), Katalog()+"mixdok.ini")
dispatch dRow
dgDok.ColumnCount = 0 dgDok.TreeMode = 1
AddColumn(dgDok, "Nazwa", 150, ftString,100, 0, 1) AddColumn(dgDok, "Id", 60, ftLong,0, 1, 0) AddColumn(dgDok, "A", 20, ftCheck,0, 1, 1) AddColumn(dgDok, "Nazwa", 60, ftString,100, 1, 1) AddColumn(dgDok, "typ", 60, ftLong,0, 1, 0) AddColumn(dgDok, "Value", 160, ftString,100, 0, 0) AddColumn(dgDok, "Seria", 60, ftString,100, 1, 0)
dgDok.Template.SetFont(0, "Arial", 14, 1) dgDok.Template.SetFont(1, "Arial", 14, 0) dgDok.Template.SetFont(-1, "Arial", 14, 1) dgDok.RowHeader = 0
dRow = dgDok.InsertRow(dgDok.RowCount) dRow.Value(COL_dg_SKROT) = "Dokumenty" dRow.Value(COL_dg_ID) = 7001 dRow.Value(COL_dg_NAZWA) = ""
BaseXT xt int err int k
BaseDK dok
for k = 1 to k > dgDok.RowCount xt.SetKey("super") xt.SetKeySeg("super",dgDok.Rows(k-1).Value(COL_dg_ID)) xt.SetKeySeg("kod","")
err = xt.GetRec(GE) while err == 0 if xt.GetField("super") != dgDok.Rows(k-1).Value(COL_dg_ID) then exit dok.GetRecById( xt.GetField("klient") ) dRow = dgDok.InsertChildRow(k-1,0) dRow.Value(COL_dg_SKROT) = xt.GetField("kod") dRow.Value(COL_dg_ID) = xt.GetField("id") dRow.Value(COL_dg_TYP) = xt.GetField("typ") if xt.GetField("typ") == "32" then dRow.Value(COL_dg_VALUE) = dok.GetField("nazwa") dRow.Value(COL_dg_SERIA) = dok.GetField("odadres") endif if xt.GetField("flag") == 128 then dRow.Value(COL_dg_CHECK) = 1
err = xt.GetRec(NX) wend next k
// porozwijaj wszytkie gałęzie for k = 1 to k > dgDok.RowCount dgDok.Rows(k-1).Expanded = 1 next k
endsub
//------------------------------------------------ int sub Wybierz() //------------------------------------------------
dispatch dRow iorec io long iddok
dRow = dgDok.Rows(dgDok.CurRow)
// ...
endsub
//------------------------------------------------ int sub OnCommandDok(int id, int msg) //------------------------------------------------
if id == 0 && msg == 0 then WczytajListeDok() endif
endsub
//------------------------------------------------ int sub PokazForme() //------------------------------------------------
//if dk.GetField("subtypi") == 41 then exit
Form "Mix-soft Wybór dokumentu",375,416 control "grid", dgDok, 5,5,360,340 button "Anuluj", 95,355,80,25, -1 button "Wybierz", 5,355,80,25, Wybierz()
int ko = execform OnCommandDok
endsub
PokazForme()
|
2015-06-29, 16:04 |
|
|
|
Strona 1 z 1
|
[ Posty: 4 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 11 gości |
|
Nie możesz tworzyć nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników
|
|
|
|