Spørger
Skjul/Vis tab pages

Spørgsmål
-
Nu har jeg brugt en hel del tid på at finde ud af hvordan C5 håndterer vis/skjul af tab pages afhængigt af de indlæste koder.
F.eks. skjules Projekter fanen på CustTable hvis man ikke har kode til ordrer.
Jeg har checket at det ikke er noget i kernen, f.eks. at den gør specielle ting ved specifikke forms, ved at eksportere en CustTable, og importere den under et nyt navn. Den gav samme opførsel, altså skjulte/viste fanerne Ordre og Projekt efter hvilke koder der var.
Jeg har sporet mig frem til at det må have noget med Xal=UserprofileHideCode + Macro=USERPROFILE_ELEMENTS, og/eller Fnc=ConfigSystem at gøre.
Specielt har jeg UserProfileHideCode mistænkt, da den anvender nogle SysInfo Kald jeg ikke har arbejdet med før.
Nogen der kan hjælpe ?
Alle besvarelser
-
-
Hvis du "fjerner" alle felter på et faneblad, forsvinder fanebladet automatisk.
Programmeringsmæssigt kan du fjerne felterne med:
SET HideFormField('<Form>','<Tabel/Block>','<Field>'),
f.eks SET HideFormField('CustTable','CustTable','Account').
Det er denne systematik der benyttes når funktionalitet fjernes, ved manglende koder, ladetillæg etc. Fjernelsen er permanent indtil C5 genstartes.Kig eventuelt i global FNC=ConfigSystem eller FNC=Country:Configsystem for videre eksempler på hvorledes HID-kommandoerne kan benyttes.
-
Jeg skal bruge det til det samme som på f.eks CustTable formen, hvor den skjuler Ordre og/eller Projekt fanen hvis man ikke har licens koder til disse moduler.
Jeg har styr på hvordan man skjuler enkelte felter.
Følgende setup:
Jeg har en form med 5 faneblade: Stamdata, Ordrer, Ordre arkiv,Pojekt, og Projekt arkiv.
På side 1 er CustTable
På side 2 SalesTable+SalesLine
På side 3 SalesTableArch+SalesLineArvch
På side 4 ProjTable+ProjLine
På side 5 ProjTableArch+ProjLineArch
Hvis man IKKE har koder til Ordre modulet, skal side 2+3 ikke vises.
Hvis man IKKE har koder til Projekt modulet, skal side 4+5 ikke vises.
Man må da for pokker kunne skjule hele baduljen mere elegant
Jeg synes bare det er voldsomt at skulle lave noget a'la :
//Kode start
#MacroLoad(DATABASE_INFORMATION)
INT &F
IF NOT #CheckCode(#CodeSales) THEN
#Loop(&F,1,#Db_File(FileStr(SalesTableArch),NFIELDS))
SET HideFormField('dwk','SalesTableArch',FieldId2Name(FileNum(SalesTableArch),&F))
END#Loop(&F,1,#Db_File(FileStr(SalesLineArch),NFIELDS))
SET HideFormField('dwk','SalesLineArch',FieldId2Name(FileNum(SalesLineArch),&F))
END#Loop(&F,1,#Db_File(FileStr(SalesTable),NFIELDS))
SET HideFormField('dwk','SalesTable',FieldId2Name(FileNum(SalesTable),&F))
END#Loop(&F,1,#Db_File(FileStr(SalesLine),NFIELDS))
SET HideFormField('dwk','SalesLine',FieldId2Name(FileNum(SalesLine),&F))
ENDENDIF
//Kode slut
Bare for Ordre, så noget tilsvarende for Projekt, og så har man alligevel brug for at håndtere eventuelle virtuelle felter ved siden af....
Der er ikke noget kode i C5 (som jeg har kunnet finde) som gør noget der bare LIGNER det, hvor der er HideFormField kommandoer blandet ind i det.
-
Hej Dan,
Da Ordre modulet ikke hører med i en 'Light' pakke fra Microsoft (og heller ikke Indkøb), men man får lov til at lave en 'Simpel faktura' eller 'Faktura' i både Debitor/Dagligt og Kreditor/Dagligt, så vises disse faner som standard på hhv. Debitor og Kreditor og er altså ikke 'kodebetinget' som f.eks. Projekt.
Når ordren / indkøbet først er faktureret, så lægges det i arkiv.
Arkivet finder du under Debitor/Kartotek - lokalmenu Information\Ordrearkiv.
Opret evt. ønske til Microsoft om at det laves på samme måde som med Ordrearkiv.
Tilbage til dit problem:
Generelt/Tilpasning/Adgangskontrol/Brugerprofiler - vælg den aktuelle profiler du vil rette i - og du kommer ind i et oversigtsbillede.
Modul - her vælger du (+)Debitor, ændre sig til (-)Debitor og udfoldes.
Vælg (+)Kartotek, ændre sig til (-)Kartotek og udfoldes.
Vælg (+)Debitor, ændre sig til (-)Debitor og udfoldes.
Felter - her vælger du på linjen med (+)Ordre at fjerne fluebenet i kolonne V.
Når du så kommer tilbage til Debitor/Kartotek - så er fanen Ordre nu væk.
Dette gøres for alle brugerprofiler som den aktuelle bruger er medlem af.
Du kan også lave nye brugerprofiler, såfremt du har rettigheder til programmodul 'Brugerrettigheder'.
Så kan du f.eks. vælge at skjule indkøbspriserne på varenumrene, såfremt der er folk i din organisation, som skal have adgang til lagermodulelt, men ikke må se hvad I reelt tjener på varerne.
Det er kun fantasien der så sætter grænser for hvad man vil skjule / åbne op for.
God fornøjelse !
M.v.h. René rsl@
- Redigeret af rsl-data.dk 2. februar 2013 08:20
-
Hej Rene!
Profilerne kan bruges til formålet, men det kræver indgriben fra brugeren.
Du har ret i at Ordre fanen bliver der, så lad os bruge Projekt fanen som eksempel.
Hvis jeg fjerner licenskoden til projektmodulet fra et sæt komplette forhandlerkoder, indeholder UserProfile kartoteket 2 henvisninger til CustTable, nemlig at feltet ProjGroup skal skjules. PåForm=CustTable er Projekt-fanen nu væk.
Hvis jeg sætter koden ind i licensbilledet igen er fanen tilbage, uden at jeg har gjort andet end at forlade licens billedet, og den således har kørt en UserProfile opdatering igen. Så er henvisningen til CustTable.ProjGroup i UserProfile naturligvis væk.
Der står intet nogen steder om at skjule andre felter i Projekt fanen. Det eneste sted hvor der i applikationen er noget der kunne være det er i Fnc=ConfigSystem, hvor det også er enkelte felter der skjules IF NOT #CheckCode(#CodeProject) THEN.
Jeg tror jeg kigger efter noget helt forkert så jeg hører gerne flere forslag fra jer.
- Redigeret af Dan Wulff 2. februar 2013 12:11
-
For "sjov" skyld har jeg kigget ekstra på prodeducen.
Du har egentligt fat i de rette elementer:
XAL=UserProfileHideCodes løber en masse applikationselementer igennem og opretter rækker i UserProfile-tabellen.
Det er også her der testes for manglende koder. Hvis koden til Projekt manger (Applikationsgruppe 19) lægges alle felter i "projekttabellerne" op i Userinfo.FNC=UserProfile::apply Løber derefter userprofile-tabellen igennem og effekturerer de enkelte elementer med de tidligere omtalte HIDE-kommandoer.
Jeg kan således ikke konkludere andet end at det er det faktum at alle felter på en fane skjules, som gør at fanen ender med at forsvinde.
-
Hejsa,
Sjovt nok er jeg selv gået bort fra den antagelse....
Det eneste som Xal=UserProfileHideCode gør, er at indsætte poster i UserProfile, og hvis jeg kigger i userprofile bagefter er det kun feltet ProjGroup der er nævnt i forbindelse med CustTable.
Jeg må sige at jeg er stadig forvirret, bare på et væsentligt højere plan.
Jeg håber på at der er en ved Microsoft som forbarmer sig over mig, og giver et par hints.
-
Hvad med noget meget mindre kompliceret? Du er jo alligevel ude i at kode en form, så kan du jo lige så godt putte IF THEN ELSE ENDIF ind. Kombiner det med #Frm_GoPge og det begynder at ligne noget fornuftigt. Skal du bruge det flere steder, så lav en function, der returnerer en værdi. Så er du ude over et bestemt sidenummer eller et bestemt kartotek.
Mvh Maria
-