Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-04-28, 11:48x



Odpowiedz w temacie  [ Posty: 18 ]  Przejdź na stronę 1, 2  Następna
Kod Kontrahenta 
Autor Wiadomość

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Kod Kontrahenta
Witam,

chciałbym w Symfonii Forte 2007c dokonać zmiany kodów kontrahentów na bardziej przystępne niż obecne. Z tego co wiem nie ma możliwości automatycznej zmiany z poziomu programu, dlatego chcę to zrobić od strony bazy SQL. Chciałbym tylko zapytać czy można taki "Update" zrobić, czy nie będzie to miało jakiś negatywnych konsekwencji ?


2012-10-23, 10:27
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
W programie powinien być raport Raporty -> Pomocnicze -> Zmiana kodu kontrahenta

Można pokusić się o taka modyfikację że zadziałałby np na podstawie Excela (kolumna A stary kod, kolumna B nowy kod) i zmienił hurtowo wiele kodów.

W bazie bym tego nie robił bo nie jest to jedna tabela gdzie należy wprowadzić zmiany.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-10-23, 12:24
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
rafal pisze:
W programie powinien być raport Raporty -> Pomocnicze -> Zmiana kodu kontrahenta

Można pokusić się o taka modyfikację że zadziałałby np na podstawie Excela (kolumna A stary kod, kolumna B nowy kod) i zmienił hurtowo wiele kodów.

W bazie bym tego nie robił bo nie jest to jedna tabela gdzie należy wprowadzić zmiany.



Szkoda, że zmiana z poziomu bazy odpada, myślałem że to tylko jedna tabela. Raport faktycznie jest jednak aby działał z excelem trzeba go modyfikować.

Niestety to dla mnie dużo zabawy ponieważ nigdy nie przerabiałem tych raportów, myślałem że zrobię to spokojnie z bazy u temat będzie załatwiony :-(

Jednak już widzę, ze oprócz tabeli DH, w tabeli DK również są kody kontrahentów.

Jak można uzyskać dokumentację do raportów ? jest coś takiego ?


2012-10-24, 20:31
Wyświetl profil
Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2008-04-18, 18:52
Posty: 5169
Pomógł: 59
Post Re: Kod Kontrahenta
Takiej dokumentacji nie ma raczej.


2012-10-25, 23:50
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
Hurtowa zmiana kodów kontrahentów.
Dane do zmiany mają znajdować się w pliku tekstowym c:\temp\kody.txt
Kod:
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1


Kod stary oddzielony tabulacją od kodu nowego

Kod:
#include "Wydruki - include"
#include "Wybór obiektu - include"

String sub sStndError(int nErr)
int i
   if nErr == 771 then
      for i=1 to i>xFactory.komunikaty.count
         if xFactory.komunikaty.item(i).status then
            sStndError = "\nBłąd nr "+(using "%d", xFactory.komunikaty.item(i).id)+": "+xFactory.komunikaty.item(i).tresc+"\n"
         else
            sStndError = "\nOSTRZEŻENIE !! "+xFactory.komunikaty.item(i).tresc+"\n"
         endif
      next i
   else
      if nErr then
         Select case nErr
            case -4101
               sStndError = using "\nBłąd nr %d: Nie odnaleziono rekordu w bazie XT.\n", nErr
            case -4010
               sStndError = using "\nBłąd nr %d: Nieunikalny kod towaru.\n", nErr
            case -4013
               sStndError = using "\nBłąd nr %d: Nie podano nazwy obiektu.\n", nErr
            case 4
               sStndError = using "\nBłąd nr %d: Nie odnaleziono obiektu.\n", nErr
            case -4201
               sStndError = using "\nBłąd nr %d: Nie można zapisac obiektu, w bazie danych istnieje już obiekt posiadający ten sam skrót i charakter.\n", nErr
            case 275
               sSTndError = using "\nBłąd nr %d: Nie odnaleziono elementu w kolekcji.\n", nErr
            case else
               sStndError = using "\nNieznany błąd nr %d.\n", nErr
         endselect
      endif
   endif
endsub

dispatch xKH, xKontrahent
int nErr

string sKH_before, sKH_after, sLinia

int f = open "c:\\temp\\kody.txt" for input

   While (input #f, sLinia) != 0
   
buf = sLinia
find regular "^{*}\t{*}$"

sKH_before =  regular 1

sKH_after = regular 2



if !(xKH=GetObjByKod("BKh",sKH_before)) then print using "Kontrahent %s nie istnieje"+lf, sKH_before: goto wypad

nErr = 0

xKontrahent = xKh.LoadFullObject()
nErr = xKontrahent.Edit()
if nErr then error sStndError(nErr)
nErr = xKontrahent.UstawKod(sKH_after)
if nErr then
   xKontrahent.Undo()
   error sStndError(nErr)
EndIf
nErr = xKontrahent.Save()
if nErr then
   error sStndError(nErr)
else
   print using "Zmieniono kod %s na %s"+lf ,sKH_before,sKH_after
endif

wypad:

wend


Raport w wersji poglądowej.
Zrób kopie bezpieczeństwa przed jego użyciem.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-10-26, 13:52
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
rafal pisze:
Hurtowa zmiana kodów kontrahentów.
Dane do zmiany mają znajdować się w pliku tekstowym c:\temp\kody.txt
Kod:
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1
KODSTARY1   KODNOWY1


Kod stary oddzielony tabulacją od kodu nowego

Kod:
#include "Wydruki - include"
#include "Wybór obiektu - include"

String sub sStndError(int nErr)
int i
   if nErr == 771 then
      for i=1 to i>xFactory.komunikaty.count
         if xFactory.komunikaty.item(i).status then
            sStndError = "\nBłąd nr "+(using "%d", xFactory.komunikaty.item(i).id)+": "+xFactory.komunikaty.item(i).tresc+"\n"
         else
            sStndError = "\nOSTRZEŻENIE !! "+xFactory.komunikaty.item(i).tresc+"\n"
         endif
      next i
   else
      if nErr then
         Select case nErr
            case -4101
               sStndError = using "\nBłąd nr %d: Nie odnaleziono rekordu w bazie XT.\n", nErr
            case -4010
               sStndError = using "\nBłąd nr %d: Nieunikalny kod towaru.\n", nErr
            case -4013
               sStndError = using "\nBłąd nr %d: Nie podano nazwy obiektu.\n", nErr
            case 4
               sStndError = using "\nBłąd nr %d: Nie odnaleziono obiektu.\n", nErr
            case -4201
               sStndError = using "\nBłąd nr %d: Nie można zapisac obiektu, w bazie danych istnieje już obiekt posiadający ten sam skrót i charakter.\n", nErr
            case 275
               sSTndError = using "\nBłąd nr %d: Nie odnaleziono elementu w kolekcji.\n", nErr
            case else
               sStndError = using "\nNieznany błąd nr %d.\n", nErr
         endselect
      endif
   endif
endsub

dispatch xKH, xKontrahent
int nErr

string sKH_before, sKH_after, sLinia

int f = open "c:\\temp\\kody.txt" for input

   While (input #f, sLinia) != 0
   
buf = sLinia
find regular "^{*}\t{*}$"

sKH_before =  regular 1

sKH_after = regular 2



if !(xKH=GetObjByKod("BKh",sKH_before)) then print using "Kontrahent %s nie istnieje"+lf, sKH_before: goto wypad

nErr = 0

xKontrahent = xKh.LoadFullObject()
nErr = xKontrahent.Edit()
if nErr then error sStndError(nErr)
nErr = xKontrahent.UstawKod(sKH_after)
if nErr then
   xKontrahent.Undo()
   error sStndError(nErr)
EndIf
nErr = xKontrahent.Save()
if nErr then
   error sStndError(nErr)
else
   print using "Zmieniono kod %s na %s"+lf ,sKH_before,sKH_after
endif

wypad:

wend


Raport w wersji poglądowej.
Zrób kopie bezpieczeństwa przed jego użyciem.



Dziękuję.
Rozumiem że ten raport zmieni kod we wszystkich wymaganych tabelach ? tj. dokumenty magazynowe, zamówienia, rezerwacje, płatności, dokumenty handlowe ?


2012-10-30, 14:32
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
Podany przyklad uzywa obiektu biznesowego Kontrahenta do zmiany kodu.
Ufam ze zmienia w bazie co trzeba.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-10-30, 15:20
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
Witam,

niestety mam problem ze zmianą kodów kontrahentów za pomocą tego skryptu. Otrzymuję błąd
Załącznik:
Błąd.jpg
Błąd.jpg [ 26.95 KiB | Przeglądany 6978 razy ]


2012-12-06, 10:13
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
a standardowym raportem zmienia?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-12-06, 11:59
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
Tak standardowy zmienia.


2012-12-06, 14:21
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
Załącz tu treść standardowego raportu.
Bo ten jest od wersji 2011 i może coś tu nie gra.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-12-06, 14:51
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
Poniżej treść standardowego raportu.

//"zmkod_kh.sc","Zmiana kodu kontrahenta","\System\Pomocnicze\",0,1.0.1,SYSTEM
//////////////////////////////////////////////////////////////////////
// Zmiana kodu kontrahenta
// zmkod_kh.sc

#define BEZ_KODOW 1
dispatch xPr=xFactory.GetObject("BProgram")
if xPr.liczbaUzytkownikow>1 then error "Nie można wykonać raportu.Przed wykonaniem raportu prosimy wylogować pozostałych użytkowników programu."
#include "Wydruki - include"

string sUPDATE="UPDATE %s SET %s='%s' WHERE %s"
string sKH_before,sKH_after,sKH_beforeOrg,sKH_afterOrg
long lKH_id
dispatch xKh
int btn_choose,i
string sWARUNEK
dispatch cmdUpdate="ADODB.Command"
dispatch connUpdate=GetAdoConnection()

cmdUpdate.ActiveConnection=connUpdate

int sub UpdateTabeli(string sTabela,string sPole,string sWarunek)
cmdUpdate.CommandText=using sUPDATE,sTabela,sPole,sKH_after,sWarunek
cmdUpdate.Execute()
endsub

#include "Wybór obiektu - include"

int sub WyborKontrahenta()
Enable(btn_choose,0)
save
string kod = ChooseObject(sKH_before,"BKh","BKartParamsKh","kontrahenta")
if kod != "" then sKH_before = kod :load
Enable(btn_choose,1)
endsub

int sub CheckData()
CheckData=1
Save
sKH_before=NormalizeStr(sKH_before)
sKH_after=NormalizeStr(sKH_after)
if Len(sKH_before)>40 then sKH_before=mid(sKH_before,1,40)
if Len(sKH_after)>40 then sKH_after=mid(sKH_after,40)
Load
if !sKh_before || !sKH_after then Message "Nie podano kodu kontrahenta" : exit
if sKH_before==sKH_after then message "Nowy kod jest taki sam jak aktualny." : exit
if !(xKH=GetObjByKod("BKh",sKH_before)) then Message "Kontrahent o kodzie '"+sKH_before+"' nie istnieje." : exit
if GetObjByKod("BKh",sKH_after) then Message "Kontrahent o kodzie '"+sKH_after+"' już istnieje." : exit
CheckData=2
endsub
form " " +GetReportName(),300,170

Group "Stary &kod kontrahenta",10,10,275,50
Edit "",sKH_before,20,30,180,18

Group "&Nowy kod kontrahenta",10,60,275,50
Edit "",sKH_after,20,80,255,18

button "&OK",130,114,70,23,CheckData()
button "&Anuluj",210,114,70,23,-1
btn_choose = Button "&Wybierz...",210,28,60,22,WyborKontrahenta()


if execform==-1 then Error ""
Arg "'","''"
buf=sKH_after
Replace Arg
sKH_afterOrg=buf
buf=sKH_before
Replace Arg
sKH_beforeOrg=buf
Delete Arg
swap sKH_after,sKH_afterOrg
swap sKH_before,sKH_beforeOrg
lKH_id = xKh.id
connUpdate.BeginTrans()
//dokumenty
PopUp(1,"Zmiana kodów w dokumentach handlowych")
sWARUNEK="(khid=%l"+IIF(BEZ_KODOW,"%s)"," AND khkod='%s')")
sWARUNEK=using sWARUNEK,lKH_id,IIF(BEZ_KODOW,"",sKH_before)
UpdateTabeli("DK","khkod",sWARUNEK)

PopUp(1,"Zmiana kodów w dokumentach zamówień")
UpdateTabeli("ZO","khkod",sWARUNEK)

PopUp(1,"Zmiana kodów w dokumentach magazynowych")
UpdateTabeli("MG","khkod",sWARUNEK)

PopUp(1,"Zmiana kodów w dokumentach płatności")
sWARUNEK=sWARUNEK+" AND (flag & 0x4000) = 0"
UpdateTabeli("PN","khkod",sWARUNEK)

PopUp(1,"Zmiana kodów w dokumentach handlowych")
sWARUNEK="(odid=%l"+IIF(BEZ_KODOW,"%s)"," AND odkod='%s')")
sWARUNEK=using sWARUNEK,lKH_id,IIF(BEZ_KODOW,"",sKH_before)
UpdateTabeli("DK","odkod",sWARUNEK)

PopUp(1,"Zmiana kodów w dokumentach zamówień")
UpdateTabeli("ZO","odkod",sWARUNEK)
/*
//baza zz
PopUp(1,"Zmiana kodów w bazie związków")
sWARUNEK="(baza1=20 AND id1=%l"+IIF(BEZ_KODOW,"%s)"," AND kod1='%s')")
sWARUNEK=using sWARUNEK,lKH_id,IIF(BEZ_KODOW,"",sKH_before)
UpdateTabeli("ZZ","kod1",sWARUNEK)
sWARUNEK="(baza2=20 AND id2=%l"+IIF(BEZ_KODOW,"%s)"," AND kod2='%s')")
sWARUNEK=using sWARUNEK,lKH_id,IIF(BEZ_KODOW,"",sKH_before)
UpdateTabeli("ZZ","kod2",sWARUNEK)
*/
//zmiana w bazie RZ
PopUp(1,"Zmiana kodu w bazie rezerwacji")
sWARUNEK="idkh=%l"
sWARUNEK=using sWARUNEK,lKH_id
UpdateTabeli("RZ","kodkh",sWARUNEK)

//zmiana kodu w bazie adresowej
PopUp(1,"Zmiana kodu w bazie adresowej")
UpdateTabeli("AD","kod",sWARUNEK)

// rekord w bazie KH
sWARUNEK="id=%l"
sWARUNEK=using sWARUNEK,lKH_id
UpdateTabeli("KH","kod",sWARUNEK)

connUpdate.CommitTrans()

message "Kod kontrahenta '"+sKH_beforeOrg+"' został zmieniony na '"+sKH_afterOrg+"'.\nAby zaktualizować dane należy zakończyć pracę z Firmą i otworzyć ją ponownie."

NoOutput()[/size][/size][/size][/size][/i][/i]


2012-12-06, 16:02
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
Z tego co widze obiekt biznesowy BKontrahent w wersji 2007 nie byl jeszcze tak madry jak w obecnych wersjach.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-12-06, 17:40
Wyświetl profil

Rejestracja: 2011-12-28, 22:36
Posty: 42
Post Re: Kod Kontrahenta
Czyli nie da rady zrobić aktualizacji z pliku txt za pomocą twojego skryptu ?


2012-12-06, 21:34
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Kod Kontrahenta
tylko w najnowszych wersjach programu.
Do Twojej wersji trzeba dostosować skrypt od początku.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2012-12-06, 21:51
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 18 ]  Przejdź na stronę 1, 2  Następna
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Kod kontrahenta na WZ

w Programy Handlowe

ele626

4

2766

2010-11-24, 18:15

krzysiek Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Taki sam kod obcy dla jednego kontrahenta

w Programy Handlowe

adam.l

14

6074

2016-05-31, 11:54

adam.l Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. zmiana w polu kod kontrahenta symfonia handel 2014

w Programy Handlowe

biko

3

3870

2013-12-10, 18:33

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki kod paskowy jako dodatkowy kod towaru (?)

[ Przejdź na stronę: 1, 2 ]

w Programy Handlowe

symfhan09

28

15728

2014-08-25, 13:48

symfhan09 Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 94 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

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant