mojaSymfonia FORUM
https://forum.mix-soft.pl/

[HMF] Zmiana numeru dokumentu AMbasic
https://forum.mix-soft.pl/viewtopic.php?f=15&t=6672
Strona 1 z 1

Autor:  wojtek [ 2015-06-03, 20:11 ]
Tytuł:  [HMF] Zmiana numeru dokumentu AMbasic

Witam,
Mam problem ze zmiana numeru dokumentu magazynowego wystawianego za pomoca IOReca
Realizuje to ostatecznie w ten sposób, że wystawiam najpierw dokument - zostaje mu narzucony numer, przerzucam go w trym edycji, zmieniam numer i zapisuje. Niestety przy imporcie kilkuset dokumentów na raz cała operacja zajmuje pół godziny. Poniżej kod:
Kod:
long sub WystawDokWz()
   
   int i, ok
   long id_dk_buf
   dok_mg.Clear()
         
      dok_mg.SetField("typDk", TypDokumentu)
      dok_mg.SetField("seria", Seria)
      dok_mg.SetField("dataWystawienia",datawyst )
      dok_mg.SetField("dataOperacji", dataOper )
      dok_mg.SetField("dzial", KodMagazynu)
      dok_mg.SetField("numerWSerii", sNumerWserii)
      dok_mg.SetField("kod", sNumerDokum)
      
      dok_mg.BeginSection("DaneKh")
      dok_mg.SetField("KhKod",KodKontrahenta)//Kod_kontrahenta(rec_dok_wz(1).idkhdokwz) )      
      dok_mg.EndSection()   
      dok_mg.SetField("Opis",opis)      
      
            dok_mg.BeginSection("Pozycja dokumentu")   
               dok_mg.SetField("Kod", KodTowaru )
               dok_mg.SetField("Lp", "1" )
               dok_mg.SetField("Ilosc", ilosc )
            dok_mg.EndSection()
         
      //dok_mg.EndSection()
      id_dk_buf = ImportMg(dok_mg)
      if id_dk_buf != 0 then   
         czyWystawiony = 1
         dokumId = WystawDokumentMagazynowy (id_dk_buf,1)
         if dokumId != 0 then
            czyWystawiony = 2
            sDokumId = using "%l",dokumId
            dok_mg.clear()
            dok_mg.SetField("id", sDokumId)
            dok_mg.SetField("numerWSerii", sNumerWserii)
            dok_mg.SetField("kod", sNumerDokum)
            EditMG(dok_mg)
         endif
      endif
      
endsub


Czy można to jakoś uprościć? Np od razu narzucić numer dokumentu bez przełaczania go w tryb edycji? Będę wdzięczny za podpowiedź.

Autor:  rafal [ 2015-06-03, 20:39 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

Z jakiego numeru na jaki zmieniasz?
Jaki jest nadawany domyslnie?
Dlaczego nie ustawisz numeru jaki chcesz za pierwszym razem?

Autor:  wojtek [ 2015-06-03, 21:16 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

Proces polega na tym,że z zupełnie innej bazy danych (program zewnętrzny) pobierane sa informacje o dok.magazynowych, które importowane sa do HMF. Ponieważ kolejne numery w serii w HMF narzucane sa automatycznie najczęściej nie sa zgodne z numerami importowanymi. I tutaj właśnie chce narzucić numer w serii zgodny z numerem dokumentu importowanego.

Stosujac przed wystawieniem dokumentu zapis

Kod:
      dok_mg.SetField("numerWSerii", sNumerWserii)
      dok_mg.SetField("kod", sNumerDokum)


HMF z niejasnych dla mnie przyczyn i tak narzuca własny numer dokumentu zgodny z szablonem numeracji w HMF po wystawieniu dokumentu. Aby osiagnać żadany efekt, już po wystawieniu dokumentu muszę przełaczyć go w tryb edycji i zmienić uprzednio narzucony numer:
Kod:
            dok_mg.clear()
            dok_mg.SetField("id", sDokumId)
            dok_mg.SetField("numerWSerii", sNumerWserii)
            dok_mg.SetField("kod", sNumerDokum)
            EditMG(dok_mg)

Jest jakiś sposób aby przed wystawieniem dokumentu narzucić mu zadany numer w serii? Numer oczywiście jest unikalny bo wcześniej sprawdzam czy dokument o tym numerze przypadkiem nie istnieje.

Autor:  rafal [ 2015-06-03, 22:11 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

Ustawiales w parametrach numeracje reczna?

Autor:  wojtek [ 2015-06-04, 06:57 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

tak, próbowałem wszystkich kombinacji.

Autor:  wojtek [ 2015-06-04, 08:13 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

Niestety nie mam w tym momencie dostepu do srodowiska testowego forte. Uruchomilem podobny kod W Symfonii i przy ustawieniu ręcznym zasad numeracji wszytko działa jak należy. Mam dodatkowe pytanie do pól IOrec. Kod w forte dotyczacy wyboru typu dokumentu ma następujaca formę:

Kod:
dok_mg.SetField("typDk", "WZ")


W symfonii aby wszytko działało muszę wpisać:

Kod:
dok_mg.SetField("typ_dokumentu", "WZ")


To samo tyczy się kontrahenta - W forte kod:

Kod:
      dok_mg.BeginSection("DaneKh")
      dok_mg.SetField("KhKod",KodKontrahenta)//Kod_kontrahenta(rec_dok_wz(1).idkhdokwz) )      
      dok_mg.EndSection()


Jeśli uruchamiam to w symfonii muszę wyremować BeginSection i Endsection , inaczej nie bierze mi kontrahenta.

Autor:  rafal [ 2015-06-05, 11:27 ]
Tytuł:  Re: [HMF] Zmiana numeru dokumentu AMbasic

Działający przykład przy włączonej ręcznej numeracji w parametrach pracy.

Kod:
IoRec dok_mg

      dok_mg.SetField("typDk", "WZ")
      dok_mg.SetField("seria", "sWZ")
      dok_mg.SetField("dzial", "CEN")
      dok_mg.SetField("numerWSerii", "10")

            dok_mg.BeginSection("Pozycja dokumentu")   
               dok_mg.SetField("Kod", "Pralka WAR super" )
               dok_mg.SetField("Lp", "1" )
            dok_mg.EndSection()

long id_dk_buf = ImportMg(dok_mg)

print WystawDokumentMagazynowy (id_dk_buf,1)

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/