Zmiany pomiędzy wersją 24 and wersją 25 dla DeployerGuide/Customization/Forte

Pokaż
Ignoruj:
Data i czas:
11/08/12 21:27:17 (12 years temu)
Autor:
jachtelik (IP: 195.248.254.194)
Komentarz:

--

Legend:

Bez zmian
Dodane
Usunięte
Zmienione
  • DeployerGuide/Customization/Forte

    v24 v25  
    160160 
    161161 
    162 Na potrzeby integracji sugeruje się wykorzystać język VBA. Import danych do Forte HM (na przykładzie generowania dokumentu Zamówienia Obcego przedstawiam Poniżej 
     162Na potrzeby integracji sugeruje się wykorzystać język VBA. Import danych do Forte HM (na przykładzie generowania dokumentu '''Zamówienia Obcego''' przedstawiam poniżej. 
     163 1. W systemie Forte Handel uruchamiamy z menu VBA > VBA IDE. Uruchamia się środowisko programowania VBA, w którym utworzymy skrypt integracyjny. 
     164 2. Otwieramy UserElement z lewego Panelu >> pokazuje się okno kodu VBA. 
     165 3. Wprowadzamy kod VBA skryptu: 
     166{{{ 
     167Private Sub GenerateZO() 
     168 
     169 
     170' Deklaracje zmiennych 
     171Dim oFactory As Object 
     172Dim oRec As Object 'Rekord danych 
     173Dim nError 
     174 
     175Dim sDocumentType As String ' Typ dokumentu 
     176Dim sDesc As String ' Opis dokumentu 
     177Dim sClientCode As String 'Nazwa kontrahenta 
     178Dim sProductCode As String 'Kod produktu 
     179Dim sQuantity As String ' Ilosc 
     180Dim sPrice As String ' Cena netto 
     181 
     182Dim sPath As String ' ścieżka katalogu z plikami wyeksportowanymi z eDokumentów 
     183Dim sBkpPath As String  ' ścieżka katalogu, do którego odczytane i przetworzone pliki 
     184                        ' zostaną przeniesione po zakończonym procesie 
     185Dim sName As String ' nazwa pliku 
     186Dim sFileName As String ' kompletna ścieżka do pliku 
     187Dim iFileNum As Integer ' znacznik pliku do operacji Input, Line Input 
     188Dim sBuf As String ' Bofor stringu odczytanego z pliku 
     189Dim iCounter As Integer ' Licznik przebiegu po liniach pliku 
     190Dim iNumber As Integer ' Licznik przebiegu po liniach pozycji produktu w pliku 
     191Dim oFileSystem As Object ' Obiekt do operacji na plikach 
     192 
     193Set oFileSystem = CreateObject("Scripting.FileSystemObject") 
     194 
     195sPath = "C:\Users\ztestowy\dane\" 
     196sBkpPath = "C:\Users\ztestowy\dane\done\" 
     197sName = Dir$(sPath & "*.txt") ' Pobranie listy plików w katalogu 
     198 
     199Do While sName <> "" ' Jeżeli/dopóki istnieją pliki w katalogu to wykonaj dalsze operacje 
     200        sFileName = sPath & sName ' Ustawienie pełnej ścieżki dokumentu 
     201         
     202        iFileNum = FreeFile() 
     203 
     204        iCounter = 1 ' Licznik przebiegu po liniach pliku 
     205        iNumber = 0 ' Licznik przebiegu po pozycjach dokumentu. 
     206                    ' Dopuszczalne wartości dla jednej pozycji dokumentu to 0-2 
     207                    ' 0 - symbol produktu 
     208                    ' 1 - ilość 
     209                    ' 2 - cena netto 
     210        Open sFileName For Input As iFileNum 
     211 
     212        ' Tworzenie obiektów deklaracji danych 
     213        Set oFactory = Application.PropertyAp("HFactory") 
     214        Set oRec = oFactory.NewObject("BIORec") ' Rekord danych, który zostanie wstawiony do systemu 
     215 
     216        sDocumentType = "ZMO" ' Typ dokumentu: Zamówienie obce 
     217        nError = oRec.SetField("typDk", Trim(sDocumentType)) ' Ustawienie typu dokumentu 
     218 
     219        Do While Not EOF(iFileNum) 
     220                        Line Input #iFileNum, sBuf 
     221                         
     222                        Select Case iCounter 
     223                                Case Is = 1 ' Wywołanie identyfikatora kontrahenta 
     224                                         
     225                                        sClientCode = "" & Trim(sBuf) 
     226                                        nError = oRec.BeginSection("danekh") 
     227                                                nError = oRec.SetField("KhKod", Trim(sClientCode)) 
     228                                        nError = oRec.EndSection() 
     229                                Case Is = 2 ' Opis dokumentu 
     230                                        sDesc = Trim(sBuf) 
     231                                        nError = oRec.SetField("opis", Trim(sDesc)) 
     232                                Case Is > 2 ' Pozycje dokumentu 
     233                                         
     234                                         
     235                                        Select Case iNumber 
     236                                                Case Is = 0 ' Kod produktu 
     237                                                        sProductCode = Trim(sBuf) 
     238                                                        nError = oRec.BeginSection("Pozycja dokumentu") 
     239                                                        nError = oRec.SetField("kod", Trim(sProductCode)) 
     240                                                         
     241                                                Case Is = 1 ' Ilość 
     242                                                        sQuantity = Trim(sBuf) 
     243                                                        nError = oRec.SetField("ilosc", Trim(sQuantity)) 
     244                                                         
     245                                                Case Is = 2 ' Cena netto 
     246                                                        sPrice = Trim(sBuf) 
     247                                                        nError = oRec.SetField("cena", Trim(sPrice)) 
     248                                                        nError = oRec.EndSection() 
     249                                    
     250                                        End Select 
     251                                         
     252                                        iNumber = iNumber + 1 ' Inkrementacja licznika 
     253                                        If iNumber > 2 Then 
     254                                                iNumber = 0 ' Resetowanie wartości licznika 
     255                                        End If 
     256                                 
     257                                 
     258                        End Select 
     259                         
     260                        iCounter = iCounter + 1 
     261                         
     262            Loop 
     263 
     264                Dim oFunction As Object 
     265                Set oFunction = oFactory.NewObject("BFunkcja") 
     266                 
     267                ' Wywołanie generowania dokumentu 
     268                Dim DocumentID As Long 
     269                DocumentID = oFunction.ImportZO(oRec) ' GENEROWANIE DOKUMENTU ZAMÓWIENIA OBCEGO 
     270 
     271                Close iFileNum ' Zamykanie pliku 
     272                 
     273                oFileSystem.MoveFile sFileName, sBkpPath & sName ' Przeniesienie pliku do katalogu bkp 
     274                 
     275                sName = Dir() 
     276Loop 
     277 
     278End Sub 
     279 
     280}}} 
     281 4. Aby wywołać powyższy skrypt dodajemy w tym samym module metodę: 
     282{{{ 
     283Private Sub MainDoc_TryToOpen(ByVal Category As String, ByVal Group As String, Name As String, ByVal ActionType As AmOpenAction, Cancel As Boolean) 
     284 'Procedura ta wykonywana jest w momencie uruchamiania okna bądź raportu 
    163285  
     286 If Name = "OnTimer" Then GenerateZO 
     287End Sub 
     288}}} 
     289 
     290W takim przypadku w momencie każdorazowego uruchomienia procedury OnTimer uruchomi się metoda GenerateZO i pliki w katalogu zostaną wczytane do bufora systemu HMF.