Proponuję dodanie własnego prawa, które będzie blokowało edycję danych kontrahentów a mimo to umozliwiało dodawanie nowego.
Aktualizuj poniższy raport za pomocą Raporty → System → Aktualizacja raportów systemowych
Kod:
//"medkh.sci"," Edycja danych kontrahenta",65522,0,0.9.1,SYSTEM,2299
//" Prawa do kontrahentów",65501,14,62
A
1
Użytkownik może edytować dane kontrahenta (jeżeli nie może to nie blokuje dodawania nowego).
Użytkownik '$u' nie ma prawa edycji danych kontrahenta.
Spowoduje to dodanie nowego prawa.
[center]
[/center]
Zmodyfikuj raport Raporty → Procedury → Procedury kontrahenta
Kod:
//"prockh.sc","Procedury kontrahenta",12015,0,1.0.0,SYSTEM
//" Procedury",2400,14,62
long Sub idUzytkownika( string sSygnatura )
baseKH kh
kh.SetKey("kod")
kh.SetKeySeg("typi", 103)
kh.SetKeySeg("kod", sSygnatura)
kh.GetRec(EQ)
idUzytkownika = kh.GetField("id")
endsub
int Sub CzyMaPrawoEdytowac(string sSygnatura)
CzyMaPrawoEdytowac = 1
int err
baseZZ zz
zz.SetKey("cross1")
zz.SetKeySeg("typi", 32)
zz.SetKeySeg("baza1", 20)
zz.SetKeySeg("id1", idUzytkownika( sSygnatura ))
zz.SetKeySeg("baza2", 6)
zz.SetKeySeg("id2", 2299) // id prawa
err = zz.GetRec(EQ)
if err == 0 then
if zz.GetField("cena") == 0 then CzyMaPrawoEdytowac = 0
endif
endSub
int Sub OnAfterInsert(long lId)
OnAfterInsert = 0
EndSub
int Sub OnBeforeDelete(long lId)
OnBeforeDelete = 0
EndSub
int Sub OnAfterDelete(long lId)
OnAfterDelete = 0
EndSub
int Sub OnAfterUpdate(long lId)
OnAfterUpdate = 0
EndSub
int Sub OnBeforeEdit(long lId)
basekh kh2
kh2.open()
kh2.GetRecById( lId )
if CzyMaPrawoEdytowac(CurrentUser()) == 1 || kh2.GetField("kod")=="" then
OnBeforeEdit = 0
else
message "Nie masz prawa do edycji danych kontrahenta"
OnBeforeEdit = -6000
endif
EndSub
Ustaw parametr pracy programu Ustawienia → Dane Firmy → Parametry → Wykonywanie procedur → Dla kontrahenta na TAK
[center]
[/center]