|
<< Kliknij, aby wyświetlić Spis treści >> Nawigacja: SIMPLE.ERP > Personel > Załączniki > Opis scriptingu dla systemu ERP.PER > Przykłady |
Przykład 1 - definiowanie skryptu dla wybranej formatki danych
Przykład 2 - przykładowy skrypt przenoszący zawartość z formatki danych do arkusza kalkulacyjnego ExcelTekst skryptu, który należy wkleić w oknie edytora: REM uruchom Excel poprzez OLE Automation Set objXL = CreateObject("Excel.Application") if objXL Is Nothing Then msgbox("Problem z otwarciem Excel'a") end if objXL.Visible = TRUE REM utworz nowy skoroszyt ile_arkuszy = objXL.SheetsInNewWorkbook 'zapamiętaj ile arkuszy objXL.SheetsInNewWorkbook = 1 'ustaw żeby wstawił 1 objXL.WorkBooks.Add ' dodaj arkusz objXL.SheetsInNewWorkbook = ile_arkuszy 'przywróć poprzednią wartość REM zbuduj arkusz objXL.Columns(1).ColumnWidth = 20 objXL.Columns(2).ColumnWidth = 20 objXL.Columns(3).ColumnWidth = 20 objXL.Cells(1, 1).Value = "Nazwisko" objXL.Cells(1, 2).Value = "Imię" objXL.Cells(1, 3).Value = "Stanowisko" objXL.Range("A1:C1").Select objXL.Selection.Font.Bold = True objXL.Selection.Interior.ColorIndex = 1 objXL.Selection.Interior.Pattern = 1 'xlSolid objXL.Selection.Font.ColorIndex = 2 objXL.Columns("A:A").Select objXL.Selection.HorizontalAlignment = &hFFFFEFDD ' xlLeft objXL.Columns("B:B").Select objXL.Selection.HorizontalAlignment = &hFFFFEFDD ' xlLeft objXL.Range("A1:A1").Select REM ---- Funkcja biegająca po naczytanej liście pracowników (widocznej na ekranie) err1 = PB.RowCount("bsc_lista_prac",il_prac) for lp =1 to il_prac err1 = PB.ScrollToRow("bsc_lista_prac",lp) err1 = PB.invokefunction("dane_osob.kadr_opis",nazwisko,"",100002) err1 = PB.invokefunction("dane_osob.kadr_opis",imie,"",100001) err1 = PB.invokefunction("dane_osob.kadr_kod_pelny",stanowisko,"",649)
if err1 < 0 then if err1 = -3 then stanowisko = "" end if end if REM wstaw do arkusza objXL.Cells(lp+1, 1).Value = Rtrim(nazwisko) objXL.Cells(lp+1, 2).Value = Rtrim(imie) objXL.Cells(lp+1, 3).Value = Rtrim(stanowisko) next msgbox("Koniec") Ten sam skrypt uruchamiany z pulpitu powinien mieć postać: for program = 1 to 1 ' dodałem aby można było wyjść z programu w przypadku błędu return = PB.CreateObject( "lista", "kp_lpr_n_bso" ) if return < 0 then msgbox(return) msgbox(PB.GetErrorDescription()) exit for end if ile_osob = PB.invokefunction("lista.naczytaj_liste",1) if ile_osob < 0 then msgbox(ile_osob) msgbox(PB.GetErrorDescription()) exit for end if return = PB.invokefunction("lista.ustaw_formatke",12, "Kadry") if return < 0 then msgbox(return) msgbox(PB.GetErrorDescription()) exit for end if REM uruchom Excel poprzez OLE Automation Set objXL = CreateObject("Excel.Application") if objXL Is Nothing Then msgbox("Problem z otwarciem Excel'a") exit for end if objXL.Visible = TRUE REM utworz nowy skoroszyt ile_arkuszy = objXL.SheetsInNewWorkbook 'zapamiętaj ile arkuszy objXL.SheetsInNewWorkbook = 1 'ustaw żeby wstawił 1 objXL.WorkBooks.Add objXL.SheetsInNewWorkbook = ile_arkuszy 'przywróć poprzednią wartość REM zbuduj arkusz objXL.Columns(1).ColumnWidth = 20 objXL.Columns(2).ColumnWidth = 20 objXL.Columns(3).ColumnWidth = 20 objXL.Cells(1, 1).Value = "Nazwisko" objXL.Cells(1, 2).Value = "Imię" objXL.Cells(1, 3).Value = "Stanowisko" objXL.Range("A1:C1").Select objXL.Selection.Font.Bold = True objXL.Selection.Interior.ColorIndex = 1 objXL.Selection.Interior.Pattern = 1 'xlSolid objXL.Selection.Font.ColorIndex = 2 objXL.Columns("A:A").Select objXL.Selection.HorizontalAlignment = &hFFFFEFDD ' xlLeft objXL.Columns("B:B").Select objXL.Selection.HorizontalAlignment = &hFFFFEFDD ' xlLeft objXL.Range("A1:A1").Select REM ----- Funkcja biegająca po liście pracowników for lp =1 to ile_osob err1 = PB.ScrollToRow("lista.bsc_lista_prac",lp) return = PB.invokefunction("lista.dane_osob.kadr_opis",imie,"",100001) if return < 0 then msgbox(return) msgbox(PB.GetErrorDescription()) msgbox("imie") exit for end if return = PB.invokefunction("lista.dane_osob.kadr_opis",nazwisko,"",100002) if return < 0 then msgbox(return) msgbox(PB.GetErrorDescription()) msgbox("nazwisko") exit for end if return = PB.invokefunction("lista.dane_osob.kadr_kod_pelny",stanowisko,"",8254) '649) if return < 0 then if return = -3 then ' msgbox(PB.GetErrorDescription()) stanowisko = "" return = 0 else msgbox(return) msgbox("stanowisko") msgbox(PB.GetErrorDescription()) exit for end if end if REM wstaw do arkusza objXL.Cells(lp+1, 1).Value = Rtrim(nazwisko) objXL.Cells(lp+1, 2).Value = Rtrim(imie) objXL.Cells(lp+1, 3).Value = RTRIM(stanowisko) next if return < 0 then exit for end if msgbox("Koniec") next |
Przykład 3 – przykładowy skrypt przenoszący zawartość z formatki danych do pliku WordSkrypt otwierający Worda i tworzący zaświadczenie o zatrudnieniu podpinany w edycji danych osobowych: for program = 1 to 1 ' dodalem aby mozna bylo wyjsc z programu w przypadku bledu err1 = PB.invokefunction("dane_osob.kadr_kod",plec,"",62) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",nazwisko,"",100002) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",imie,"",100001) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_data",data_do, "",100005) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if if not isnull(data_do ) then if data_do <= date() then if plec = "K" then napis = "Pani: " + imie + " " + nazwisko + " nie jest aktualnie zatrudniona." else napis = "Pan: " + imie + " " + nazwisko + " nie jest aktualnie zatrudniony." end if msgbox(napis) exit for end if end if err1 = PB.invokefunction("dane_osob.kadr_dowolna","Z",90) 'adres if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",kod, "D",95) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",miasto, "D",96) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",ulica, "D",92) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",dom, "D",93) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_opis",mieszkanie, "D",94) if err1 < 0 then if err1 = -3 then set mieszkanie = "" else msgbox(PB.GetErrorDescription()) exit for end if end if err1 = PB.invokefunction("dane_osob.kadr_data",data_od, "",1) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_kod_pelny",stanowisko, "",649) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if err1 = PB.invokefunction("dane_osob.kadr_kod",umowa, "",670) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if if umowa = "" then msgbox("Nie podano tytulu umowy o prace") exit for end if err1 = PB.invokefunction("dane_osob.kadr_data_kon",umowa_do, "",670) if err1 < 0 then msgbox(PB.GetErrorDescription()) exit for end if Set Word = CreateObject("Word.Application") if Word Is Nothing Then msgbox("Problem z otwarciem Worda") exit for end if Word.Visible = True Word.Documents.Add Word.Selection.Font.Bold = False Word.Selection.TypeText "Znak : / /T/02" Word.Selection.ParagraphFormat.TabStops.Add Word.CentimetersToPoints(15.5) , 2, 0 Word.Selection.TypeText " " 'tab Word.Selection.TypeText "Warszawa, dn:" 'Word.Selection.InsertDateTime "yyyy-mm-dd" Word.Selection.TypeText cstr(date()) Word.Selection.TypeParagraph Word.Selection.ParagraphFormat.Reset Word.Selection.TypeParagraph Word.Selection.Font.Reset Word.Selection.Font.Bold = True Word.Selection.Font.Size = 16 Word.Selection.ParagraphFormat.Alignment = 1 'Word.Selection.Paragraphs.Alignment = wdAlignParagraphCenter Word.Selection.TypeText "Zaswiadczenie" Word.Selection.TypeParagraph Word.Selection.Font.Reset Word.Selection.ParagraphFormat.Reset Word.Selection.TypeParagraph Word.Selection.TypeParagraph Word.Selection.TypeText "Zaswiadcza sie, ze " if plec = "K" then Word.Selection.TypeText "Pani: " else Word.Selection.TypeText "Pan: " end if Word.Selection.TypeText imie + " " + nazwisko + " " if plec = "K" then Word.Selection.TypeText "zamieszkala: " else Word.Selection.TypeText "zamieszkaly: " end if Word.Selection.TypeText kod + " " + miasto + " ul. " + ulica + " " + dom + " " if mieszkanie <> "" then Word.Selection.TypeText "m. " + mieszkanie + " " end if Word.Selection.TypeText "jest " if plec = "K" then Word.Selection.TypeText "zatrudniona " else Word.Selection.TypeText "zatrudniony " end if Word.Selection.TypeText "w SIMPLE S.A. od dnia: " + CStr(data_od) + " na stanowisku " + stanowisko + ". " if umowa = "nok" then Word.Selection.TypeText "Umowa zawarta jest na czas nie okreslony." elseif umowa = "ok" then Word.Selection.TypeText "Umowa zawarta jest na czas okreslony do dnia " + CSTR(umowa_do) + "." elseif umowa = "p" then Word.Selection.TypeText "Umowa zawarta jest na okres próbny do dnia " + CSTR(umowa_do) + "." elseif umowa = "z" then Word.Selection.TypeText "Praca na umowe/zlecenie do dnia " + CSTR(umowa_do) + "." end if Word.Selection.TypeParagraph Word.Selection.TypeText "Zaświadczenie wydaje się na prośbę pracownika. " Word.Selection.TypeParagraph Word.Selection.TypeText "Od wynagrodzenia są potrącane i przekazywane składki ZUS." Word.Selection.TypeParagraph Word.Selection.TypeParagraph Next |
Przykład 4 - skrypt zapisujący wszystkich pracowników do plikuSet fso = CreateObject("Scripting.FileSystemObject") Set t = fso.CreateTextFile("c:\windows\pulpit\testfile.txt", True) sql = "select pracownik_nrewid, imie, nazwisko from kp_pracownik" er = PB.SQLSelect("BAZA",sql) er = PB.RowCount ("BAZA",ile) for i = 1 to ile 'msgbox i er = PB.GetItemString("BAZA",i,"nazwisko",nazwisko) er = PB.GetItemString("BAZA",i,"imie",imie) t.WriteLine(imie+ ";" + nazwisko) 'msgbox imie+ " " + nazwisko next msgbox "Utworzono skryp na pulpicie" t.Close |