Autor Thema: Persönliche Ordner werden nicht gefüllt  (Gelesen 2786 mal)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Persönliche Ordner werden nicht gefüllt
« am: 01.04.14 - 12:03:26 »
In einer Datenbank befinden sich vier Ordner vom Typ gemeinsam, persönlich bei erster Verwendung.

Beim Öffnen eines Ordners läuft ein Script, das die für den Kontext relevanten Dokumente in den Ordner verschiebt.

Mit drei Benutzern wurde das nun getestet, bei einem Benutzer funktioniert das mit einem einzigen Ordner nicht, die anderen drei Ordner funktionieren (ist immer das gleiche Script, das über einen Agenten aus einer Schaltfläche im Ordner gestartet wird). "Funktioniert nicht" heißt, es werden keine Dokumente im Ordner angezeigt, es erscheint keine Fehlermeldung.

Bei den anderen beiden Benutzern funktionieren alle Ordner. Was haben wir probiert:

Datenbank vom Desktop gelöscht und neu hinzugefügt, es kam kein Hinweis darauf, dass persönliche Ordner entfernt werden (also nicht im Desktop gespeichert)
Persönliche Ansicht gelöscht und neu erstellen lassen (mehrfach), sowohl über die Aktion im Ordner, als auch im Designer
Gemeinsame Ansicht gelöscht und aus Schablone neu erstellen lassen
Das Script debuggt. Es werden alle relevanten Dokumente gefunden und mit doc.PutInFolder (ordnername) in den (bzw. irgendeinen?) Ordner verschoben
Verschiedene Clients ausprobiert. Bei dem User, bei dem es nicht funktioniert, funktioniert es auf keinem Client, aber ein User, bei dem es funktioniert, funktioniert es auch auf dem Client, bei dem es beim anderen User nicht funktioniert (also unabhängig vom Client, abhängig vom User)
Alle Benutzer haben die gleichen Rechte (testweise Manager mit allen Rechten, auf jeden Fall dürfen sie persönliche Ordner erstellen)
Ein Dokument manuell in den Ordner verschoben, nach der nächsten Ausführung wurde dieses Dokument angezeigt, obwohl es nicht in den Kontext passte und daher entfernt werden musste

Es sieht für mich so aus, als wenn das Script bei diesem Benutzer die Dokumente in irgendeinen anderen Ordner verschiebt, vielleicht in den Master, aus dem die persönlichen Ordner erstellt werden. Hat jemand irgendeine Idee, wo man noch drehen oder suchen könnte?
« Letzte Änderung: 02.04.14 - 10:20:53 von Peter Klett »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Persönliche Ordner werden nicht gefüllt
« Antwort #1 am: 01.04.14 - 13:20:53 »
Du könntest in Deinem Script mal per db.GetView( "NameDesPersönlichenFolders" ) mal schauen, was da zurückkommt. z.B. könntest Du Dir mal die Unid des Elements anschauen und kucken, was der liefert.

Was mir seltsam vorkommt: Wenn die Benutzer das Recht haben, persönliche Ordner zu erstellen, dann darf die Abfrage beim entfernen vom Desktop nicht kommen, weil ja nix im Desktop gespeichert ist.

Du könntest Dir in dem Fall mal mit Full Access Admin die Datenbank auf dem Server anschauen. Persönliche Views sind ja auch nur Views mit Leserfeld... Als Full Access Admin SIEHST Du die im Designer, und kannst mal schauen, ob Dir da was auffällt..
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Persönliche Ordner werden nicht gefüllt
« Antwort #2 am: 01.04.14 - 13:29:55 »
@Peter Klett
Bau mal für einen 5. Ordner alles neu. Mit einem komplett neuen Namen für den Ordner.

Wichtig dabei - Gestaltungselemente neu anlegen, nur Script-Code und Formelsprache-Code an sich darf kopiert werden.

Was soll das bringen? Kopieren und Einfügen von Notes Gestaltungselementen funktioniert manchmal nicht richtig/komplett, obwohl nach außen alles gut aussieht. Folge: Es KÖNNEN allerlei lustige und nicht nachvollziehbare Fehler auftreten. Prominentes Beispiel: Ansichten und (gemeinsame) Spalten.

Vielleicht ist es auch hier so ein Problem?

Ansonsten:
alles manuell mitloggen, also an sinnvollen Stellen Print-Befehle oder Log-Befehle irgendwelcher Art mit detaillierten Informationen. Denken diese Print's das gleiche wie der Debugger?

Idee Nr. 3
Jemandem Zugriff auf die DB des betroffenen Nutzers gewähren. Kann dieser Testnutzer den vierten Ordner erstellen und befüllen?

Idee Nr. 4
Gestaltung der DB in Ytria angucken (geht auch in NotesPeek wenn ich mich recht entsinne) und schauen, ob man da was sieht. Ich arbeite sehr sehr selten mit persönlichen Ordnern... bin da etwas eingerostet, sorry. Alternativ (falls Du derlei Tools nicht einsetzt) eine NotesNoteCollection aufbauen für alle Designelemente vom Typ Ordner und darin die Eigenschaften ansehen.

Frage:
Führst Du Call db.EnableFolder("meinOrdner") aus?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Persönliche Ordner werden nicht gefüllt
« Antwort #3 am: 01.04.14 - 15:55:04 »
Vielen Dank Euch beiden für die schnellen Antworten. Ich will mal einiges sortieren:

Dass keine Meldung über zu löschende Ordner beim Entfernen der Kachel vom Desktop gekommen ist, war zu erwarten, denn die Ansichten sollen in der Datenbank gespeichert sein. An anderer Stelle hatte ich das schon mal erlebt, dass solche Ordner (persönlich bei Erstbenutzung) auf dem Desktop abgelegt werden, wenn das Recht zum Erstellen von persönlichen Ordnern fehlt, deshalb dieser Test.

Die nicht funktionierende persönliche Ansicht hatte ich mir direkt beim User im Designer angeschaut, mir ist da nichts aufgefallen, Leserfeld war sauber gesetzt.

Die Routine läuft so, dass ein Agent über die uiview sich die view holt und daraus den Namen ausliest. In Abhängigkeit dieses Namens werden dann die Dokumente gesucht. Im Debugger war die view die persönliche (anhand UniversalID zu erkennen). Allerdings übergibt man in PutInFolder nur den Namen des Ordners, was der daraus dann macht, ist Blackbox. Wäre schicker, wenn man view übergeben könnte, dann wäre das absolut eindeutig.

db.EnableFolder habe ich bisher nicht genutzt. Die Ordner sind in eine Gliederung eingebunden und beim Klick auf den Gliederungseintrag wird der persönliche Ordner erstellt. Das funktioniert ja auch bei den drei anderen Ordnern, die vom Ablauf absolut identisch sind. Wenn ich mich recht erinnere, sind die drei funktionierenden während der Entwicklung als Kopien des (nur bei dieser einen Person) nicht funkionierenden Ordners entstanden. Könnte ich probieren, aber ich sehe da keinen Sinn drin, denn der persönliche Ordner wird ja angelegt, und das würde db.EnableFolder ja auch machen.

Es handelt sich auch nicht um eine Datenbank des Users, sondern um ein und dieselbe Datenbank auf dem gleichen Server, auf den alle zugreifen. Also in der Datenbank gibt es von dem einen gemeinsamen Ordner drei persönliche, zwei werden korrekt gefüllt, der dritte nicht.

Wenn das nicht zuverlässig funktioniert, muss ich mir vielleicht etwas anderes ausdenken, ich fand die Lösung aber eigentlich ganz schick. Folgende verkürzt dargestellt Anforderung will ich lösen:

Es gibt Mandantendokumente, in denen dem Mandanten Produkte zugeordnet werden. An anderer Stelle wird dem Mandanten je Produkt ein Ansprechpartner zugeordnet. Also habe ich folgende Informationen:

Mandant A
Produkt A - Ansprechpartner A
Produkt B - Ansprechpartner B

Mandant B
Produkt A - Ansprechpartner B
Produkt B - Ansprechpartner A

Nun benötige ich eine Ansicht, in der in Abhängigkeit meiner persönlichen Produktzuordnung die Mandanten angezeigt werden, die dieses Produkt zugeordnet haben, kategorisiert nach dem Ansprechpartner. Habe ich Produkt A im Fokus, zeigt die Ansicht:

Ansprechpartner A
    Mandant A
Ansprechpartner B
    Mandant B

Eine eingebettete Ansicht scheidet m.E. aus, da mir die zu "hampelig" sind, was STRG+A, Buttons usw. angeht. Gelöst habe ich das dadurch, dass separate Dokumente je Mandant und Produkt geschrieben werden. Alle Dokumente des im Fokus befindlichen Produktes werden in den persönlichen Ordnern dargestellt.

Es muss halt nur zuverlässig sein ...

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Persönliche Ordner werden nicht gefüllt
« Antwort #4 am: 01.04.14 - 21:01:12 »
Ich finde die Idee von Torsten gut, sich die View/Ordner vor dem verschieben mal zu holen und die UNID auszuwerten.

Dann gibt es imho 3 Möglichkeiten:
1. Es ist das richtige Designelement
2. Es ist das falsche Designelement (z. B. wenn es eine view mit dem gleichen Namen existiert, oder der cache nimmt den Masterordner).
3. Es kommt ein Leerstring bzw. Error zurück, weil er das Designelement nicht findet.

Es müsste doch mit dem Teufel zugehen, wenn man das nicht findet.
Andy

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Persönliche Ordner werden nicht gefüllt
« Antwort #5 am: 02.04.14 - 10:20:37 »
Habe es jetzt folgendermaßen gelöst:

Der Master-Ordner heißt beispielsweise "Mandanten". Das Script holt sich zuerst die uiview. Enthält der Ordner (uiview.Viewname) keinen Aliasnamen, holt es sich die view (uiview.View), und über dessen UniversalID das (Gestaltungs-)Dokument. Enthält das Dokument das Item "$Authors", ist es die persönliche Ansicht. Falls nicht, steigt das Script mit einer Fehlermeldung aus.

Im Normalfall werden dann $Title und $Name im Gestaltungsdokument auf "Mandanten|MandantenP" geändert. Der persönliche Ordner hat damit den Alias "MandantenP". Das Verschieben der Dokumente in und aus dem Ordner erfolgt daraufhin mit dem Alias, so ist definitiv sichergestellt, dass der persönliche Ordner angesprochen wird.

Getestet habe ich auch, ob durch die Vergabe des Aliases bei nächster Nutzung des "Mandanten" der persönliche Ordner gefunden und nicht neu aus dem Master erstellt wird. Der Test verlief positiv.

Da der Benutzer nun die Dokumente im Ordner sieht, gehe ich davon aus, dass vorher die Dokumente in den Master geschoben wurden. Denn Dokumente wurden definitiv verschoben, das konnte man auch an der Laufzeit erkennen.

Vermutlich hat doc.PutInFolder also nicht korrekt gearbeitet und anstelle des persönlichen Ordners den gemeinsamen verwendet. Böses Teil ...

EDIT: Das ganze funktioniert natürlich nicht mit Leserechten, aber das spielt in unserem Kontext keine Rolle.
« Letzte Änderung: 02.04.14 - 10:22:44 von Peter Klett »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz