none
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 ?

    30. januar 2013 16:28

Alle besvarelser

  • Hvad skal du bruge det til? Mere for at spore ind på hvilket problem, du leder efter en løsning på.

    Mvh Maria

    30. januar 2013 20:42
  • 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.

    31. januar 2013 13:14
  • 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))
      END

    ENDIF 

    //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.

    2. februar 2013 02:43
  • 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@


    2. februar 2013 08:19
  • 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
    2. februar 2013 11:56
  • 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.

    2. februar 2013 13:32
  • 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.

    2. februar 2013 14:30
  • 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

    4. februar 2013 21:18
  • Hejsa,

    Jeg valgte "min" egen løsning, og skjule alle DB felter med et #LoopFields, og så de virtuelle bagefter.

    Det er ikke kønt, men det virker efter hensigten.

    Tak for jeres input.

    11. februar 2013 19:39